我正在使用一个商业应用程序,该应用程序抛出 SocketException 消息,
现有连接被远程主机强制关闭
这种情况发生在客户端和服务器之间的套接字连接上。连接状态良好,并且正在传输大量数据,但随后突然断开连接。
有人见过这个吗?原因可能是什么?我可以猜测一些原因,但还有什么方法可以在这段代码中添加更多内容来找出原因可能是什么?
欢迎任何意见/想法。
... 最新的 ...
我有一些来自 .NET 跟踪的日志记录,
System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
根据日志记录的其他部分,我看到了这样的事实0#0
表示正在发送长度为 0 字节的数据包。但这到底意味着什么呢?
两种可能性之一正在发生,我不确定是哪一种,
-
连接正在关闭,但数据随后被写入套接字,从而产生了上述异常。这0#0
只是意味着没有发送任何内容,因为套接字已经关闭。
-
连接仍然打开,并且正在发送一个零字节的数据包(即代码有错误)并且0#0
意味着正在尝试发送一个零字节的数据包。
你怎么看?我想这可能还没有定论,但也许其他人也见过这种东西?
这通常意味着远程端关闭了连接(通常通过发送 TCP/IPRST
包)。如果您使用第三方应用程序,可能的原因是:
- 您正在向应用程序发送格式错误的数据(其中可能包括向 HTTP 服务器发送 HTTPS 请求)
- 由于某种原因,客户端和服务器之间的网络链路断开
- 您触发了第三方应用程序中的错误,导致其崩溃
- 第三方应用程序已耗尽系统资源
第一种情况很可能就是正在发生的情况。
你可以点火Wireshark准确查看线路上发生的情况以缩小问题范围。
如果没有更具体的信息,这里的任何人都不太可能真正为您提供帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)