因此,我要在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的角度來看,垃圾回收器將成為不可訪問的對象。為了防止這種情況:在客戶端停止發送后,請確??蛻舳诉B接存儲在代碼可訪問的變量中。
另一種選擇是在程序的某個位置關閉連接的一端而不知道它。
- 2 回答
- 0 關注
- 261 瀏覽
添加回答
舉報
0/150
提交
取消