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  }