【发布时间】:2019-02-21 22:04:54
【问题描述】:
我正在使用 .Net 的套接字类,我正在使用以下代码:
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(true);
这会阻塞整整两分钟。我指定了 true,因为我将立即重用套接字并重新建立连接。无论我在那里有关闭电话,它都会阻塞两分钟。我唯一能做的就是通过 false 断开连接。但是我想重用socket。
有什么想法吗?
更新:
我已阅读代码。我已经设置了 DontLinger 选项。它没有帮助。
更新 2:
我已根据请求添加了网络跟踪:
跟踪 1:使用 DontLinger 选项
System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Socket(InterNetwork#2)
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Socket()
System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Connect(eee:nnnn#-2063562120)
System.Net.Sockets Information: 0 : [4668] Socket#5009246 - Created connection from aaa.bbb.ccc.ddd.eee:nnnnn to www.xxx.yyy.zzz.:mmmm.
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Connect()
System.Net.Sockets Verbose: 0 : [4668] Socket#5009246::Disconnect()
System.Net.Sockets Verbose: 0 : [4668] Exiting Socket#5009246::Disconnect()
Trace 2:使用关机(SocketShutdown.Both);
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Socket(InterNetwork#2)
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Socket()
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Connect(ddd:eeeee#-2063562120)
System.Net.Sockets Information: 0 : [0300] Socket#5009246 - Created connection from aaa.bbb.ccc.ddd:eeee to www.xxx.yyyy.zzzz:nnnnn.
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Connect()
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Shutdown(Both#2)
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Shutdown()
System.Net.Sockets Verbose: 0 : [0300] Socket#5009246::Disconnect()
System.Net.Sockets Verbose: 0 : [0300] Exiting Socket#5009246::Disconnect()
【问题讨论】:
-
我们能看到一些周围的代码吗?可能是其他原因导致延迟,例如循环或阻塞调用。