golang 简单实现tcp服务端和tcp客户端

    科技2025-12-17  10

    服务端

    package main import ( "fmt" "net" "time" ) func main() { address := net.TCPAddr{ IP: net.ParseIP("127.0.0.1"), Port: 8000, } listener, err := net.ListenTCP("tcp", &address) if err != nil{ fmt.Println("ERR: ", err) return } for { conn, err := listener.AcceptTCP() if err != nil{ fmt.Println("ERR: ", err) continue } fmt.Println("Remote address: ", conn.RemoteAddr) go echo(conn) } } func echo(conn net.Conn){ tick := time.NewTicker(time.Second*5) for now := range tick.C{ var buff [512]byte num, err := conn.Read(buff[0:]) if err != nil{ fmt.Println("ERR: ",err) continue }else{ fmt.Println("Receive: ", string(buff[:num])) } n, err := conn.Write([]byte(now.String())) if err != nil{ fmt.Println("ERR: ", err) conn.Close() return } fmt.Printf("Send %d bytes to %s\n", n, conn.RemoteAddr()) } }

    客户端

    package main import ( "fmt" "net" ) func main(){ address := net.TCPAddr{ IP: net.ParseIP("127.0.0.1"), Port: 8000, } conn, err := net.DialTCP("tcp", nil, &address) if err != nil{ fmt.Println("ERR: ", err) return } for { var buff [512]byte // 这里不要使用bar buff []byte,因为它没有申请空间!!!!!!!!! conn.Write([]byte("Hello world")) n, err := conn.Read(buff[0:]) if err != nil{ fmt.Println("ERR: ", err) conn.Close() break } fmt.Printf("Receive %d bytes data : %s from %s \n",n , string(buff[:n]), conn.RemoteAddr()) } }
    Processed: 0.019, SQL: 9