.Net 停止监听套接字

标签 .net sockets

我有一个 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/

相关文章:

.net - 数据重置后扩展器崩溃

c++ - 我应该如何在 UDP 套接字上实现安全性

objective-c - 如果从另一个类调用,CocoaAsyncSocket 服务器将不会启动

.net - 动态业务规则的架构

c# - 当引用确实存在时,找不到类型或命名空间

.net - SHA1哈希在Objective-C和C#.NET中产生不同的结果

windows - winsock 周围的 BSD 套接字兼容包装器?

sockets - 套接字的同步程度如何?

c# - 如何重复读取套接字?

.net - CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern 在 .Net 3.5 中被破坏了吗?