当我的程序退出时,我正在尝试停止TCP侦听器.我不关心套接字或任何活动客户端套接字上当前活动的任何数据.
套接字清理代码基本上是:
try
{
myServer.Server.Shutdown(SocketShutdown.Both)
}
catch (Exception ex)
{
LogException(ex)
}
myServer.Server.Close(0)
myServer.Stop()
Run Code Online (Sandbox Code Playgroud)
myServer是一个TCPListener
在某些情况下,Shutdown会抛出异常
System.Net.Sockets.SocketException:不允许发送或接收数据的请求,因为没有连接套接字(当使用sendto调用在数据报套接字上发送时)System.Net.Sockets.Socket.Shutdown没有提供地址(SocketShutdown如何)
编辑2010年5月14日
经过进一步调查,可以抛出异常并正确关闭套接字.
有时,即使应用程序退出netstat后,套接字仍处于LISTENING状态.
我无法创建明确的再现场景,它发生在看似随机的时间.
客户端套接字是独立清理的.
你有什么建议帮我把这个插座呀?
| 归档时间: |
|
| 查看次数: |
8248 次 |
| 最近记录: |