Go语言tcp通讯使用模块net;
package main
import (
"fmt"
"net"
"strings"
)
func process(conn net.Conn) {
defer conn.Close()
for {
var buf [128]byte
recv, errors := conn.Read(buf[:])
if errors != nil {
continue
}
recvStrings := string(buf[:recv])
fmt.Println("服务端收到客户端发来的数据:", recvStrings)
respond := strings.Trim(recvStrings, "\r\n")
conn.Write([]byte(respond))
}
}
func main() {
listen, errors := net.Listen("tcp", "127.0.0.1:20000")
if errors != nil {
return
}
println("127.0.0.1:20000")
for {
conn, errors := listen.Accept()
if errors != nil {
continue
}
go process(conn)
}
}
上段为TCP服务端,下段为TCP客户端;
package main
import (
"fmt"
"net"
"time"
)
func main() {
conn, errors := net.Dial("tcp", "127.0.0.1:20000")
if errors != nil {
return
}
defer conn.Close()
for {
sendInfo := "hello there"
_, errors = conn.Write([]byte(sendInfo))
if errors != nil {
continue
}
buf := [512]byte{}
recv, errors := conn.Read(buf[:])
if errors != nil {
continue
}
fmt.Println("客户端接收服务端发送的数据: ", string(buf[:recv]))
time.Sleep(1000 * time.Millisecond)
}
}