Go: net
Server:
package main import ( "fmt" "net" ) func main() { fmt.Println("net.Listen") listen, err := net.Listen("tcp", "0.0.0.0:5555") if err != nil { fmt.Println(err) return } defer func(listen net.Listener) { err := listen.Close() if err != nil { fmt.Println("main close err >>>", err) } }(listen) for { fmt.Println("listen.Accept") conn, err := listen.Accept() if err != nil { fmt.Println("Accept error:", err) } else { fmt.Printf("conn %T %v client: %v\n", conn, conn, conn.RemoteAddr().String()) } go process(conn) } } func process(conn net.Conn) { defer func(conn net.Conn) { err := conn.Close() if err != nil { fmt.Println("process close err >>>", err) } }(conn) buffer := make([]byte, 1024) for { length, err := conn.Read(buffer) if err != nil { fmt.Println("process read err >>>", err) return } fmt.Print(string(buffer[:length])) } }
client:
package main import ( "bufio" "fmt" "net" "os" "strings" ) func main() { conn, err := net.Dial("tcp", "localhost:5555") if err != nil { fmt.Println(err) return } reader := bufio.NewReader(os.Stdin) for { readString, err := reader.ReadString('\n') if err != nil { fmt.Println("readString err >>>", err) } readString = strings.Trim(readString, " \r\n") if readString == "exit" { fmt.Println("client exit") return } _, err = conn.Write([]byte(readString + "\n")) if err != nil { fmt.Println("write err >>>", err) } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-05-20 centos6 阿里云 yun源