可以在本地端关闭套接字而不调用Close吗?

时间:2010-08-30 01:26:08

标签: c# .net sockets

我遇到一个套接字似乎自行关闭的问题。

这是(已编辑的)网络诊断跟踪:

Exiting Socket#62696216::BeginSend()
Exiting Socket#62696216::EndSend()
Socket#62696216::BeginSend()
Exception in the Socket#62696216::BeginSend - An established connection was aborted by the    software in your host machine

请注意,发送成功后会出现错误。错误说套接字在本地关闭(即在主机上),但是没有调用Close。这是一个间歇性的错误,也许只发生过一千次。

套接字是如何关闭的?

我觉得必须有一个非常简单的答案,但我几个小时都没有。任何帮助将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:0)

可能是一些事情.. -超时 - 主机上打开的套接字数量超出限制 你的代码中的 -

如果没有看到代码或了解环境,就很难确定。

答案 1 :(得分:0)

如果内核模式防病毒软件选择阻止转移,这就是它的样子。

答案 2 :(得分:0)

这通常意味着两件事之一。你有一个防火墙或防病毒软件,认为你的程序是恶意的,或者(如果它只发生一次偶尔),其中一个先前的发送超时,这使得系统关闭套接字。据我所知,EndSend在没有发出错误信号的情况下返回这一事实并不意味着数据已经物理传递到目标服务器。