github.com/gogf/gf@v1.16.9/.example/net/gtcp/tcp_server_client.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 "time" 7 ) 8 9 func main() { 10 addr := "127.0.0.1:8999" 11 12 // Server 13 go func() { 14 tcpaddr, err := net.ResolveTCPAddr("tcp4", addr) 15 if err != nil { 16 panic(err) 17 } 18 listen, err := net.ListenTCP("tcp", tcpaddr) 19 if err != nil { 20 panic(err) 21 } 22 for { 23 if conn, err := listen.Accept(); err != nil { 24 panic(err) 25 } else if conn != nil { 26 go func(conn net.Conn) { 27 for { 28 buffer := make([]byte, 1024) 29 n, err := conn.Read(buffer) 30 if err != nil { 31 fmt.Println(err) 32 break 33 } else { 34 fmt.Println(">", string(buffer[0:n])) 35 conn.Close() 36 } 37 } 38 39 }(conn) 40 } 41 } 42 }() 43 44 time.Sleep(time.Second) 45 46 // Client 47 if conn, err := net.Dial("tcp", addr); err == nil { 48 // first write 49 _, err := conn.Write([]byte("hello1")) 50 if err != nil { 51 fmt.Println(err) 52 conn.Close() 53 return 54 } else { 55 fmt.Println("ok") 56 } 57 58 // sleep 10 seconds and re-send 59 time.Sleep(10 * time.Second) 60 61 // second write 62 _, err = conn.Write([]byte("hello2")) 63 if err != nil { 64 fmt.Println(err) 65 conn.Close() 66 return 67 } else { 68 fmt.Println("ok") 69 } 70 // sleep 10 seconds and re-send 71 time.Sleep(10 * time.Second) 72 } else { 73 panic(err) 74 } 75 76 }