小工具知识网

当前位置: 首页 > 行业知识 > 使用go语言实现简单的tcp通信功能

行业知识

使用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        }    }}
()

上一篇:为什么手机黑屏怎么办啊?

下一篇:福利猫游戏下载攻略,热门游戏轻松获取秘籍!