github.com/gogf/gf@v1.16.9/.example/net/gtcp/gtcp_pool2.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/os/gtime"
    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  				if err := conn.Send(append([]byte("> "), data...)); err != nil {
    20  					fmt.Println(err)
    21  				}
    22  			}
    23  			if err != nil {
    24  				break
    25  			}
    26  			return
    27  		}
    28  	}).Run()
    29  
    30  	time.Sleep(time.Second)
    31  
    32  	// Client
    33  	for {
    34  		if conn, err := gtcp.NewPoolConn("127.0.0.1:8999"); err == nil {
    35  			if b, err := conn.SendRecv([]byte(gtime.Datetime()), -1); err == nil {
    36  				fmt.Println(string(b), conn.LocalAddr(), conn.RemoteAddr())
    37  			} else {
    38  				fmt.Println(err)
    39  			}
    40  			conn.Close()
    41  		} else {
    42  			glog.Error(err)
    43  		}
    44  		time.Sleep(time.Second)
    45  	}
    46  }