github.com/gogf/gf@v1.16.9/.example/net/gtcp/gtcp_server_client1.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/gogf/gf/net/gtcp" 8 "github.com/gogf/gf/os/glog" 9 "github.com/gogf/gf/util/gconv" 10 ) 11 12 func main() { 13 // Server 14 go gtcp.NewServer("127.0.0.1:8999", func(conn *gtcp.Conn) { 15 defer conn.Close() 16 for { 17 data, err := conn.Recv(-1) 18 if len(data) > 0 { 19 fmt.Println(string(data)) 20 } 21 if err != nil { 22 // client closed, err will be: EOF 23 fmt.Println(err) 24 break 25 } 26 } 27 }).Run() 28 29 time.Sleep(time.Second) 30 31 // Client 32 conn, err := gtcp.NewConn("127.0.0.1:8999") 33 if err != nil { 34 panic(err) 35 } 36 defer conn.Close() 37 for i := 0; i < 10000; i++ { 38 if err := conn.Send([]byte(gconv.String(i))); err != nil { 39 glog.Error(err) 40 } 41 time.Sleep(time.Second) 42 if i == 5 { 43 conn.Close() 44 break 45 } 46 } 47 48 // exit after 5 seconds 49 time.Sleep(5 * time.Second) 50 }