如何使用 Net 包确定 TCP 连接关闭
问题:
实现时对于 TCP 服务器,了解客户端何时关闭连接至关重要。如何使用 net 包来确定这一点?
答案:
要检测关闭的 TCP 连接,可以使用以下方法:
one := make([]byte, 1) c.SetReadDeadline(time.Now()) if _, err := c.Read(one); err == io.EOF { // Connection closed } else { // Connection still open }
此方法涉及:
超时检测:
要检测超时,您可以检查错误是否为网络错误。超时错误。
if neterr, ok := err.(net.Error); ok && neterr.Timeout() { // Timeout occurred }
更新(Go 1.7 ):
在 Go 1.7 中,零字节读取会立即返回并且不会导致错误。为了解决这个问题,有必要读取至少一个字节。
以上是如何在 Go 的 net 包中检测 TCP 连接关闭?的详细内容。更多信息请关注PHP中文网其他相关文章!