网络编程
-
TCP通信
服务器:
package main import ( "fmt" "net" ) // tcp server端 func processConn(conn net.Conn) { // 3.与客户端通信,通过循环一直接受连接 for { var tmp [128]byte // 参数为切片 n, err := conn.Read(tmp[:]) if err != nil { fmt.Println("read from conn failed,err:", err) return } // 切片转换为字符串,不然读出来的是一串ASCLL码 fmt.Println(string(tmp[:n])) } } func main() { // 1.本地端口启动服务 listener, err := net.Listen("tcp", "127.0.0.1:20000") if err != nil { fmt.Println("start tcp on 127.0.0.1:20000 failed,err:", err) return } // 2.等待客户端建立连接 for { conn, err := listener.Accept() if err != nil { fmt.Println("accept failed,err", err) return } go processConn(conn) } }
客户端:
package main import ( "bufio" "fmt" "net" "os" "strings" ) // tcp client func main() { // 1.与server端建立连接 conn, err := net.Dial("tcp", "127.0.0.1:20000") if err != nil { fmt.Println("dial 127.0.0.1:20000 failed,err:", err) return } // 2.发送数据 reader := bufio.NewReader(os.Stdin) var msg string for { fmt.Print("请输入内容:") msg, _ = reader.ReadString('\n') //读到换行 msg = strings.TrimSpace(msg) if msg == "exit" { break } conn.Write([]byte(msg)) } // 通过命令行输入参数 // if len(os.Args) < 2 { // msg = "hello world" // } else { // msg = os.Args[1] // } // conn.Write([]byte(msg)) conn.Close(