2
我正在使用net.Listen()
来侦听来自客户端的TCP连接。去TCP超时不工作?
当客户端建立连接时,Handler(conn net.Conn)
将处理它。
func Handler(conn net.Conn) {
read_len, err := conn.Read(request)
if err != nil {
if neterr, ok := err.(net.Error); ok && neterr.Timeout() {
fmt.Println(neterr)
PILOG("Client timeout!", PILOGWARNING)
conn.Close()
return
}
}
我使用的测试客户端连接然后突然杀客户端不发送DISCONNECT
消息。我的服务器应该在达到超时时关闭连接,但等待很长时间后,它永远不会发生。
我也试过conn.SetReadDeadline(time.Now())
,但似乎它仍然无法正常工作。所以我不知道默认的TCP超时是什么,我该如何设置?
我也用netstat -n
,得到了以下结果被杀后,客户端:
tcp4 0 0 127.0.0.1.12345 127.0.0.1.57296 CLOSE_WAIT
是什么CLOSE_WAIT
意思?
尝试过,但现在的工作... –
@ReckHou:这很难帮助没有完整的,可编译的和最小的代码要么重现STDLIB错误或看,并试图找到你的一个错误。我似乎记得使用截止日期,他们为我工作的IIRC。 – zzzz