github.com/gogf/gf@v1.16.9/.example/net/gtcp/tcp_server_client.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"net"
     6  	"time"
     7  )
     8  
     9  func main() {
    10  	addr := "127.0.0.1:8999"
    11  
    12  	// Server
    13  	go func() {
    14  		tcpaddr, err := net.ResolveTCPAddr("tcp4", addr)
    15  		if err != nil {
    16  			panic(err)
    17  		}
    18  		listen, err := net.ListenTCP("tcp", tcpaddr)
    19  		if err != nil {
    20  			panic(err)
    21  		}
    22  		for {
    23  			if conn, err := listen.Accept(); err != nil {
    24  				panic(err)
    25  			} else if conn != nil {
    26  				go func(conn net.Conn) {
    27  					for {
    28  						buffer := make([]byte, 1024)
    29  						n, err := conn.Read(buffer)
    30  						if err != nil {
    31  							fmt.Println(err)
    32  							break
    33  						} else {
    34  							fmt.Println(">", string(buffer[0:n]))
    35  							conn.Close()
    36  						}
    37  					}
    38  
    39  				}(conn)
    40  			}
    41  		}
    42  	}()
    43  
    44  	time.Sleep(time.Second)
    45  
    46  	// Client
    47  	if conn, err := net.Dial("tcp", addr); err == nil {
    48  		// first write
    49  		_, err := conn.Write([]byte("hello1"))
    50  		if err != nil {
    51  			fmt.Println(err)
    52  			conn.Close()
    53  			return
    54  		} else {
    55  			fmt.Println("ok")
    56  		}
    57  
    58  		// sleep 10 seconds and re-send
    59  		time.Sleep(10 * time.Second)
    60  
    61  		// second write
    62  		_, err = conn.Write([]byte("hello2"))
    63  		if err != nil {
    64  			fmt.Println(err)
    65  			conn.Close()
    66  			return
    67  		} else {
    68  			fmt.Println("ok")
    69  		}
    70  		// sleep 10 seconds and re-send
    71  		time.Sleep(10 * time.Second)
    72  	} else {
    73  		panic(err)
    74  	}
    75  
    76  }