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

因此,我要在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的方式,但是有人可以建议另一种方法来解决此问题,而不必每次我想阅读某些内容时都需要关闭并打开连接吗?


开心每一天1111
浏览 245回答 2
2回答

qq_笑_17

垃圾回收器(GC)可能会关闭连接的一端,因为net.Conn从GC的角度来看,垃圾回收器将成为不可访问的对象。为了防止这种情况:在客户端停止发送后,请确保客户端连接存储在代码可访问的变量中。另一种选择是在程序的某个位置关闭连接的一端而不知道它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go