C# 监听异常System.Net.Sockets.SocketException (0x80004005): 一个封锁操作被对 WSACancelBlockingCall 的调用中断
时间: 2024-04-04 09:35:25 浏览: 462
这个问题也涉及到 Socket 网络编程中的阻塞操作。当使用 C# 进行 Socket 编程时,在进行监听操作时可能会遇到这个异常。
这个异常的原因与上面所述的一样,是因为阻塞操作被对 WSACancelBlockingCall 函数的调用中断所引起的。
解决这个问题需要在代码中正确处理异常。具体来说,可以在 catch 块中添加对 SocketException 异常的处理代码,包括判断是否是 WSAEINTR 错误码以及相应的处理措施,比如重新创建 Socket 并重新进行监听操作等。
另外,需要注意的是,WSACancelBlockingCall 函数只能在正在进行阻塞操作的线程中调用。如果在非阻塞状态下调用该函数,将会返回一个错误码 WSAEINVAL。因此,在调用 Socket 相关的阻塞操作时,需要注意线程的处理,确保 WSACancelBlockingCall 函数的调用有效。
阅读全文