1 server.go
1.监听端口2.接收客户端请求建立链接3.创建goroutine处理链接。
package mainimport ("fmt""net")func main() {listener, err := net.Listen("tcp", ":47123")if err != nil {return}for {conn, err := listener.Accept()if err != nil {continue}go Handler(conn)}}func Handler(conn net.Conn) {defer conn.Close()for {var buf [1024]byten, err := conn.Read(buf[:])if err != nil {fmt.Println("client已退出")break}recvStr := string(buf[:n])fmt.Println("收到client数据:", recvStr)conn.Write([]byte("已收到" + recvStr))}}
2 client.go
1.建立与服务端的链接
2.进行数据收发
3.关闭链接
package mainimport ("bufio""fmt""net""os""strings")func main() {conn, err := net.Dial("tcp", ":47123")if err != nil {return}defer conn.Close()inputReader := bufio.NewReader(os.Stdin)for {// 读取用户输入, 如果输入Q就退出input, _ := inputReader.ReadString('\n')inputInfo := strings.Trim(input, "\r\n")if strings.ToUpper(inputInfo) == "Q" {return}// 发送数据_, err = conn.Write([]byte(inputInfo))if err != nil {return}buf := [1024]byte{}n, err := conn.Read(buf[:])if err != nil {return}fmt.Println(string(buf[:n]))}}
