Go 学习笔记14.tcp服务

tcp-server.go

// 收到什么发回去什么

package main

import (
	"fmt"
	"log"
	"net"
)

func main() {
	// 1.建立监听,绑定端口
	tcp_server,err :=net.Listen("tcp",":8888")
	if err != nil {
		log.Panic("Failed to Listen",err)
	}
	// 4.收尾工作
	defer tcp_server.Close()

	// 2.等待新连接 并发
	for {
		conn,err :=tcp_server.Accept() //阻塞等待
		if err != nil {
			fmt.Println("Failed to Accept",err) // 这里不能终止服务,提示就可以
			continue
		}

		// 3.用新连接通信
		go cli_conn(conn)

	}

}


// 处理消息的函数
func cli_conn(conn net.Conn) {
	defer conn.Close()
	fmt.Println("localaddr:",conn.LocalAddr())
	fmt.Println("localaddr:",conn.RemoteAddr())
	//循环收发消息
	buf := make([]byte,256)
	for {
		// 获取消息
		n,err := conn.Read(buf) // 数据存在buf中,n是读的数据大小
		if err != nil {
			fmt.Println("Failed to Read",err)
			break
		}
		// 返回消息
		fmt.Print("Send Response:",string(buf[:n]))
		conn.Write(buf[:n])

	}
}

客户端

# yum install nc
nc ip port
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章