当插座断开连接时如何判断?

pet*_*ter 5 .net c# sockets

我正在使用C#的ElSSLSocket.这是一个SecureBlackBox套接字.SecureBlackBox是处理安全套接字的第三方库.

我可以看到ElSSLSocket对象有一个名为'Socket'的属性,因此底层套接字是一个普通的.NET套接字.

我的问题是,是否存在某种我可以订阅的事件,以便我可以看到套接字何时不正常地断开连接?我有一个客户端服务器连接,经常会断开连接.很难看出它是客户端还是服务器,很难看到实际原因.

我很确定应用程序中存在一些逻辑问题,即这不是由网络中断或类似的东西引起的.

我还应该告诉你,我得到的断开是这个错误,

SocketException - 远程主机强制关闭现有连接

ErrorCode - 10054

如果有任何方法我可以找到原因吗?

Ste*_*ary 4

检测半开连接是经典的套接字编程场景之一。该Socket.Connected属性完全无用,并且Socket.Poll不适用于所有情况。最好每隔几秒钟发送一次“心跳”消息。

10054 是常见错误之一。这意味着连接已丢失(未完全关闭)。它可能是由远程计算机关闭、远程进程退出、甚至中间路由器重新启动引起的。