为了账号安全,请及时绑定邮箱和手机立即绑定

如何让net.Read等待golang中的输入?

如何让net.Read等待golang中的输入?

Go
开心每一天1111 2021-05-07 16:25:21
因此,我要在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的角度来看,垃圾回收器将成为不可访问的对象。为了防止这种情况:在客户端停止发送后,请确保客户端连接存储在代码可访问的变量中。

另一种选择是在程序的某个位置关闭连接的一端而不知道它。


查看完整回答
反对 回复 2021-05-10
  • 2 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信