github.com/gogf/gf@v1.16.9/.example/net/gtcp/tls/gtcp_server_client.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 address := "127.0.0.1:8999" 14 crtFile := "server.crt" 15 keyFile := "server.key" 16 // TLS Server 17 go gtcp.NewServerKeyCrt(address, crtFile, keyFile, func(conn *gtcp.Conn) { 18 defer conn.Close() 19 for { 20 data, err := conn.Recv(-1) 21 if len(data) > 0 { 22 fmt.Println(string(data)) 23 } 24 if err != nil { 25 // if client closes, err will be: EOF 26 glog.Error(err) 27 break 28 } 29 } 30 }).Run() 31 32 time.Sleep(time.Second) 33 34 // Client 35 tlsConfig, err := gtcp.LoadKeyCrt(crtFile, keyFile) 36 if err != nil { 37 panic(err) 38 } 39 tlsConfig.InsecureSkipVerify = true 40 41 conn, err := gtcp.NewConnTLS(address, tlsConfig) 42 if err != nil { 43 panic(err) 44 } 45 defer conn.Close() 46 for i := 0; i < 10; i++ { 47 if err := conn.Send([]byte(gconv.String(i))); err != nil { 48 glog.Error(err) 49 } 50 time.Sleep(time.Second) 51 if i == 5 { 52 conn.Close() 53 break 54 } 55 } 56 57 // exit after 5 seconds 58 time.Sleep(5 * time.Second) 59 }