我正在尝试在程序退出时停止TCP侦听器。我不关心当前在套接字上活动的任何数据或任何活动客户端套接字。
套接字清理代码基本上是:
try
{
myServer.Server.Shutdown(SocketShutdown.Both)
}
catch (Exception ex)
{
LogException(ex)
}
myServer.Server.Close(0)
myServer.Stop()
我的服务器是一个TCPListener。
在某些情况下,关闭操作将抛出异常。
System.Net.Sockets.SocketException: 因为套接字未连接且未提供地址(在使用sendto调用发送数据报套接字时),因此禁止请求发送或接收数据 at System.Net.Sockets.Socket.Shutdown(SocketShutdown how)
编辑 2010年5月14日
经过进一步调查,发现即使会引发异常,套接字也可以正确关闭。
有时,甚至在应用程序退出后,netstat仍然显示套接字处于LISTENING状态。
客户端套接字是独立清理的。
你有什么建议可以帮助我让这个套接字关闭吗?