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  }