项目中服务端采用Socket接收连接进来的客户端的信息。在调用socket.Receive()方法时,有时会抛出上述异常。
具体情况如下:
服务程序平时运行正常,连续运行几天后,突然出现这个异常,之后,所有连接进来的客户端都会在Receive()时抛出异常。服务器不能再接收任何客户端发来的信息。但是服务端仍然能正常接收客户端的连接请求,即能accept()。当重启程序后,一切又恢复正常。
请朋友们帮我分析一下问题的原因及讨论一下解决方法。
谢谢。
服务端不能 Receive, 是因为连接已经超时,或因为意外情况连接断开,总之就是连接不再可用了.
TCP有个连接空闲超时,这是一个问题;
也可能客户端连接被防火墙之类的关闭了.
总之,这是正常现象,你的应用必须要处理这种问题,而且这只能从你的应用中去解决. 也就是说,客户端不会总是在断开连接之前先通知你,因为你必须应对这些情况.