日期:2014-05-18  浏览次数:21026 次

java socket超时出现 read time out 错误(服务端)




这段代码本来意思是当服务端接收不到数据的情况下,时间超过10秒,就抛出socketexception异常,显示!!!连接超时!!!,然后再尝试给客户端发送一个心跳包,如果捕获到异常,则说明客户端已经下线,但是现在超时时间到了就会报read time out错误,求解

这是报错信息:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:90)
at receive.ReceiveData_7.ReceiveData(ReceiveData_7.java:44)
at returndata.ReturnData_6.ReturnData(ReturnData_6.java:34)
at treatment.UploadTreatment.Upload_Treatment(UploadTreatment.java:84)
at receive.ReceiveTreatmentData_3.ReceiveData(ReceiveTreatmentData_3.java:143)
at listenport.ListenPort_1$CreateServerThread.run(ListenPort_1.java:59)
------解决方案--------------------
clientSocket.set....
这不是客户端的代码么?

抛出这个异常的意思是,客户端socket阻塞的等待服务器响应,结果因为未知的原因服务器的响应没有到客户端,导致客户端超过了等待时间,就抛出一个异常
------解决方案--------------------
你的异常捕获到了吗 
------解决方案--------------------
我前几天也碰到该问题,我的情况和你大概不一样。
我的是用CXF框架写的web service,之前都正常运行;后面数据库崩了一次,web service也出了问题,客户端一直与服务端连不上,即握手失败。
后面找了很多原因,一直没找到答案,其实程序是正常的。
最后怀疑是网络问题,就直接把服务端换了一台服务器,就跑起来,OK,连接成功。