針對net.Conn, 如何判斷連接是否已經關閉了呢? 比如發送資料前就判斷連接是否可以使用
uj5u.com熱心網友回復:
net.Conn沒有提供這樣的介面,沒法直接判斷用捕捉例外的方式吧
uj5u.com熱心網友回復:
正常客戶端關閉連接,你用err.EOF判斷,服務端得到資料長度為0,也認為關閉了,服務端讀取超時,也要關閉,客戶端例外退出,你用errStr := err.Error()
if strings.Contains(errStr, "An existing connection was forcibly closed by the remote host") ||
strings.Contains(errStr, "An established connection was aborted by the software in your host machine") ||
strings.Contains(errStr, "connection reset by peer"){
break
}
這方法雖然土,但是兼容性好,windows,unix都可用。
uj5u.com熱心網友回復:
tcp操作一般的模式是,你就當連接是正常的,發起讀取或寫入,如果連接斷開,此時會回傳錯誤。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62306.html
標籤:go語言
