隐藏页面特效

TCP Server and Client Demo

1|0server.go


package main import ( "bufio" "fmt" "io" "net" "time" ) func tcpPipe(conn *net.TCPConn) { ipStr := conn.RemoteAddr().String() defer func() { fmt.Println("Disconnected:" + ipStr) conn.Close() }() reader := bufio.NewReader(conn) i := 0 for { message, err := reader.ReadString('\n') if err != nil || err == io.EOF { break } fmt.Println(string(message)) time.Sleep(time.Second * 1) msg := time.Now().String() + conn.RemoteAddr().String() + "Server Say Hello!\n" b := []byte(msg) conn.Write(b) i++ if i > 10 { break } } } // 服务端代码 func main() { var tcpAddr *net.TCPAddr tcpAddr, _ = net.ResolveTCPAddr("tcp", "127.0.0.1:9999") tcpListener, _ := net.ListenTCP("tcp", tcpAddr) defer tcpListener.Close() fmt.Println("Server ready to read ...") for { tcpConn, err := tcpListener.AcceptTCP() if err != nil { fmt.Println("accept error:", err) continue } fmt.Println("A client connected:" + tcpConn.RemoteAddr().String()) // 每来一个连接就开启一个协程来管理 go tcpPipe(tcpConn) } }

2|0client.go


package main import ( "bufio" "fmt" "io" "net" "time" ) func main() { var tcpAddr *net.TCPAddr tcpAddr, _ = net.ResolveTCPAddr("tcp", "127.0.0.1:9999") conn, err := net.DialTCP("tcp", nil, tcpAddr) if err != nil { fmt.Println("Client connect error!" + err.Error()) return } defer conn.Close() fmt.Println(conn.LocalAddr().String() + ":Client connected!") onMessageRecived(conn) } func onMessageRecived(conn *net.TCPConn) { reader := bufio.NewReader(conn) b := []byte(conn.LocalAddr().String() + "Say hello to Server...\n") conn.Write(b) for { msg, err := reader.ReadString('\n') fmt.Println("ReadString") fmt.Println(msg) if err != nil || err == io.EOF { fmt.Println(err) break } time.Sleep(time.Second * 2) fmt.Println("writing....") b := []byte(conn.LocalAddr().String() + "write data to Server...\n") _, err = conn.Write(b) if err != nil { fmt.Println(err) break } } }

__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/16142870.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示