:
package main
import (
"fmt"
"io"
"net"
"time"
)
func main() {
server := ":8330"
tcpAddr, err := net.ResolveTCPAddr("tcp", server)
if err != nil {
fmt.Println("resolve err:", err)
return
}
listen, err := net.ListenTCP("tcp", tcpAddr)
if err != nil {
fmt.Println("listen err:", err)
return
}
defer listen.Close()
for {
conn, err := listen.Accept()
if err != nil {
fmt.Println("accept err:", err)
continue
}
go handler(conn)
}
}
func handler(conn net.Conn) {
go func() {
for {
var buf = make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil {
// 读取到EOF,客户端关闭连接
if err == io.EOF {
conn.Close()
return
}
fmt.Println("read err:", err)
return
}
fmt.Println("read data ", n, ":", string(buf))
}
}()
curTime := time.Now().String()
_, err := conn.Write([]byte(curTime))
if err != nil {
fmt.Println("write err:", err)
return
}
fmt.Println("send data:", curTime)
}
参考:
《极客时间:网络编程实战》