我的服务器 senario 是这样的:一个 io 线程一直在读取 tcp 连接。一段时间后,控制线程可能会由于活动较少或其他原因而决定关闭它。如果调用 c.Close() io 线程将报告这样的错误:read tcp xxx->xxx: use of closed network connection。
代码是这样的:
func recv(c net.Conn) {
input := bufio.NewScanner(c)
for input.Scan() {
msg <- input.Text()
...
}
}
//main
conn, err := s.Accept()
...
go recv(conn)
for {
select {
case m := <-msg:
...
case <-timeout:
conn.Close() // oops!
}
}
我也许可以忽略该错误,但我想知道是否有更好的方法。
拉莫斯之舞
慕沐林林
梦里花落0921
相关分类