server1:
package main

import ( "fmt" "net")func main() { l, err := net.Listen("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } fmt.Println("服务器等待客户端连接") conn, err := l.Accept() if err != nil { fmt.Println(err) } defer conn.Close() fmt.Println("客户端建立连接 ") buf := make([]byte, 4096) n, err := conn.Read(buf) if err != nil { fmt.Println(err) } fmt.Println(string(buf[:n])) conn.Write(buf[:n])}

client1:

package mainimport ( "fmt" "net")func main() { conn, err := net.Dial("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } defer conn.Close() conn.Write([]byte("are you ready")) buf := make([]byte, 4096) n, err := conn.Read(buf) if err != nil { fmt.Println(err) } fmt.Println(string(buf[:n]))}

sever2:

package mainimport ( "fmt" "io" "net" "runtime" "strings")func process(conn net.Conn) { // io.Copy(conn, conn) buf := make([]byte, 4096) for { n, err := conn.Read(buf) if err != nil { if err == io.EOF { fmt.Println("客户端断开连接") runtime.Goexit() } else { fmt.Println(err) runtime.Goexit() } //break } fmt.Println("接收到消息:", string(buf[:n])) conn.Write([]byte(strings.ToUpper(string(buf[:n])))) //fmt.Println(strings.ToUpper(string(buf[:n]))) }}func main() { l, err := net.Listen("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } defer l.Close() for { conn, err := l.Accept() if err != nil { fmt.Println(err) continue } defer conn.Close() fmt.Println(conn.RemoteAddr()) go process(conn) }}

client2:

package mainimport ( "bufio" "fmt" "net" "os" "strings")func main() { conn, err := net.Dial("tcp", "127.0.0.1:9876") if err != nil { fmt.Println(err) } defer conn.Close() for { //strs :="" // fmt.Scanln(&strs) 空格有问题 //strs := make([]byte, 4096) //n, err := os.Stdin.Read(strs) fmt.Println("请输入要发送的消息:") str, err := bufio.NewReader(os.Stdin).ReadString('\n') if err != nil { fmt.Println(err) } str = strings.TrimSpace(str) //fmt.Println("发送前", , "展示") //fmt.Println("a", str, "b") if str == "Q" { fmt.Println("接收到退出命令,退出客户端") break } conn.Write([]byte(str)) buf := make([]byte, 4096) n, err := conn.Read(buf) if err != nil { fmt.Println(err) break } defer conn.Close() fmt.Println("接收到消息:", string(buf[:n])) }}