因此,我要在Go中为电梯制造服务器,并且要通过带有TCP连接的goroutine来运行函数“ handler”。我希望它从连接中读取,如果在一定时间内未检测到信号,我希望它返回错误。func handler(conn net.Conn){ conn.SetReadTimeout(5e9) for{ data := make([]byte, 512) _,err := conn.Read(data) }}只要我有一个客户端通过连接发送东西,它似乎就可以正常工作,但是只要客户端停止发送net.Read函数,它就会返回错误EOF,并且立即开始循环播放。这可能是应该使用Read的方式,但是有人可以建议另一种方法来解决此问题,而不必每次我想阅读某些内容时都需要关闭并打开连接吗?
2 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
垃圾回收器(GC)可能会关闭连接的一端,因为net.Conn
从GC的角度来看,垃圾回收器将成为不可访问的对象。为了防止这种情况:在客户端停止发送后,请确保客户端连接存储在代码可访问的变量中。
另一种选择是在程序的某个位置关闭连接的一端而不知道它。
- 2 回答
- 0 关注
- 244 浏览
添加回答
举报
0/150
提交
取消