我在远程几台服务器(win2003,linux)上部署了socket服务端,本地客户端连接上去后,客户端5分钟内没有发送消息准时自动断开,需要重连,但是其中有一台服务器不会出现这个请况。
然后如果在局域网内部署socket服务端,客户端连接却不会有超时自动断开的问题,这是什么原因?
有人说是服务器上系统环境TCP参数配置问题,但是具体是什么参数呢?
我现在想不管什么环境,socket客户端连接后就不会断开,我现在想知道系统环境这边对socket程序的影响,麻烦大家帮我找找原因,谢谢啦

解决方案 »

  1.   

    客户端断开并没有影响到服务端,只是服务端都会提示一个java.net.SocketException: Connection reset。有个客户他的客户端是c#写的,他客户端断开再次发送请求的时候会有“远程主机强迫断开一个现有连接”的提示出来,需要重新连接。
      

  2.   


    提示java.net.SocketException: Connection reset说明是服务器端没有处理好读取的socket,建议用线程处理这类问题,可以让断开的客户端线程先等待然后等所有客户端都断开再断开服务器。“远程主机强迫断开一个现有连接”的提示出来。说明是客户端的问题了,因为不太懂c#的socket编程所以我不好说。另外问一句,你这是聊天系统?如果是我可以给你个简单的chart代码,你可以参考下。
      

  3.   

    想TCP连接一直都不断开,那就采用TCP长连接的方式进行通信。
    楼主,每3秒发送一个废物信息给服务端,用来保持连接,即可。
      

  4.   

    没有代码真的不好说啊。一个异常可能有很多种状况啊。不一定别的连你没异常就说明服务器没有问题啊,也可能是你的代码不兼容c#的客户端那。也可能是客户端的某些设置不被服务器接收那?听你的意思这是个已经完成的项目,那么应该是不能贴代码了?如果可以贴的话还可以帮你看看。java.net.SocketException: Connection reset这个异常就是socket连接重置,至于为什么重置原因很多。端口、协议的异常都可能产生啊。