2012-03-05 90 views
-1

我有用于发送和接收短信的Sever-Client应用程序,它可以正常工作到上个月。但之后我得到了TCP/Ip套接字异常。我调试服务器应用程序并发现异常:Tcp/IP Socket异常

System.IO.IOException:无法从传输连接读取数据:现有连接被远程主机强制关闭。 ---> System.Net.Sockets.SocketException:现有连接被远程主机 强制关闭System.Net.Sockets.EndReceive(IAsyncResult asyncResult) System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)

当我调试更多时,客户端上出现同样的异常。 我经历了许多类似于此的线程,人们提出这是与防火墙/ NAT /防病毒拦截端口有关的网络问题,这是由于客户端之间的这种连接造成的服务器干扰。 我使用了2999端口,并且多个客户端在同一端口上与服务器通信。 任何线索?究竟是什么原因?

+1

你有没有试过在Wireshark的网络层面看看发生了什么?如果没有,请这样做,并在您的问题中包含这些信息。 – 2012-03-05 07:21:56

+0

另外,如果直到上个月它确实工作的很好,唯一有意义的更改*是* firewall/nat/antivirus阻止端口配置更改。 – Jason 2012-03-05 07:28:50

+0

主机是否可能更改为https? – Induster 2012-03-05 07:36:55

回答

1

现在这种情况一直发生还是有时会发生?如果它每隔一次又一次发生,我会做的就是把它放在一个try catch语句中,当这个错误被抛出时,重新连接并重试并记录它发生的事情,以及当它被抛出时发生的所有事情当你获得更多关于何时被抛出的信息时,你可以回头找出问题所在。如果它一直在发生,那么一切都会迫使你的连接关闭女巫可能是一个防火墙,因此为了测试我会关闭所有的防火墙和防病毒软件。

+0

有时会发生这种情况。我在我的应用程序中执行了日志(try,catch),并且在例外情况下,我重新启动客户端以再次连接它,有时这会起作用,有时客户端无法连接。 – 2012-03-05 10:19:10

+0

它是不同的计算机或导致此错误的同一台计算机?或任何地方你没有循环回来,一切都只是结束而不关闭套接字?如果你可以发布你的一些代码,它可能会有所帮助。 – Shredder2500 2012-03-05 17:33:15

+0

是服务器位于不同的计算机上,客户端位于不同的计算机上。 – 2012-03-06 08:52:29