一个定期报告时间的tcp服务器
package main
import (
"io"
"log"
"net"
"time"
)
func main() {
listenner,err:=net.Listen("tcp","localhost:8000")
if err != nil {
log.Fatal(err)
}
for {
conn,err := listenner.Accept()
if err != nil {
log.Print(err)
continue
}
handleConn(conn)
}
}
func handleConn(c net.Conn) {
defer c.Close()
for{
_,err:=io.WriteString(c,time.Now().Format("15:04:05\n"))
if err != nil {
return
}
time.Sleep(1*time.Second)
}
}
之后使用nc(netcat)连接tcp服务器
nc localhost 8000
返回结果
catdeiMac:mysql cat$ nc localhost 8000
11:12:25
11:12:26
11:12:27
11:12:28
11:12:29
11:12:30
11:12:31
11:12:32
11:12:33
11:12:34
11:12:35
11:12:36
11:12:37
这里是分割线
- main函数第一行代码使用了net.Listen函数
- 一个for循环,使用Listener接口的Accept方法
- 使用handleConn执行io.WriteString(c,time.Now().Format("15:04:05\n"))
接下来是go源代码解释,请看我的下一篇博客
有疑问加站长微信联系(非本文作者)