我有一个 Windows 服务围绕一些类似于此的代码编写 Asynchronous Server Socket Example
一切都很好。客户端/服务器通信完美无缺。完全没有问题。当我尝试关闭 Windows 服务时,我无法停止服务器套接字监听器而不会出现以下错误:
A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied.
我已经尝试了以下所有组合来停止聆听。但他们都抛出错误。
listener.Shutdown(SocketShutdown.Both);
listener.Disconnect(true);
listener.Close();
即使它出错,套接字最终也会释放并关闭。但是,最多可能需要一分钟才能重新启动 Windows 服务。我需要能够比这更快地循环 Windows 服务。如果你能帮忙,请告诉我。谢谢...
最佳答案
尝试设置 LingerState 属性
socket.LingerState = new LingerOption(false, 0);
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(false);
socket.Close();
希望这可以帮助。
关于.Net 停止监听套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097977/