行业知识
使用go语言实现简单的tcp通信功能
2026-10-21 11:56:52
来源:互联网转载
啥都不说了,���接上代码
()服务端Server
//Server.gopackage mainimport ( "fmt" "net" "os")func main(){ //服务端在本机8888端口建立tcp监听 listener,err :=net.Listen("tcp","127.0.0.1:8888") ServerHandleError(err,"net.listen") for { //循环接入所有客户端得到专线连接 conn,e := listener.Accept() ServerHandleError(e,"listener.accept") //开辟独立协程与该客聊天 go ChatWith(conn) }}func ServerHandleError(err error,when string) { if err != nil { fmt.Println(err, when) os.Exit(1) }}//在conn网络专线中与客户端对话func ChatWith(conn net.Conn){ //创建消息缓冲区 buffer := make([]byte, 1024) for { ///---一个完整的消息回合 //读取客户端发来的消息放入缓冲区 n,err := conn.Read(buffer) ServerHandleError(err,"conn.read buffer") //转化为字符串输出 clientMsg := string(buffer[0:n]) fmt.Printf("收到消息",conn.RemoteAddr(),clientMsg) //回复客户端消息 if clientMsg != "im off" { conn.Write([]byte("已读:"+clientMsg)) } else { conn.Write([]byte("bye")) break } } conn.Close() fmt.Printf("客户端断开连接",conn.RemoteAddr())} 客户端Client
//Client.gopackage mainimport ( "bufio" "fmt" "net" "os")func ClientHandleError(err error, when string){ if err != nil { fmt.Println(err, when) os.Exit(1) }}func main(){ //拨号远程地址,简历tcp连接 conn, err := net.Dial("tcp","127.0.0.1:8888") ClientHandleError(err, "client conn error") //预先准备消息缓冲区 buffer := make([]byte,1024) //准备命令行标准输入 reader := bufio.NewReader(os.Stdin) for { lineBytes,_,_ := reader.ReadLine() conn.Write(lineBytes) n,err := conn.Read(buffer) ClientHandleError(err, "client read error") serverMsg := string(buffer[0:n]) fmt.Printf("服务端msg",serverMsg) if serverMsg == "bye" { break } }} ()
上一篇:为什么手机黑屏怎么办啊?