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

再见也许再也不再见 2014-01-24 10:12:15




这段代码本来意思是当服务端接收不到数据的情况下,时间超过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)
...全文
17781 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
求解,超时时间到了之后不会进行异常的捕获是什么原因 另外我如何保证客户端断线之前给我发送的数据我都已经接收并保存到文件里了,现在续接到的数据有问题,应该是原始文件尾和续接数据头不对应
  • 打赏
  • 举报
回复
引用 4 楼 foreverjoe99 的回复:
我前几天也碰到该问题,我的情况和你大概不一样。 我的是用CXF框架写的web service,之前都正常运行;后面数据库崩了一次,web service也出了问题,客户端一直与服务端连不上,即握手失败。 后面找了很多原因,一直没找到答案,其实程序是正常的。 最后怀疑是网络问题,就直接把服务端换了一台服务器,就跑起来,OK,连接成功。
是有点不一样,我为了测试断点续传,认为的将客户端下线,服务端设置超时时间,一段时间没有数据过来的话就判断客户端为下线,但是这个超时的异常就是捕获不到
  • 打赏
  • 举报
回复
引用 3 楼 zyrobert 的回复:
你的异常捕获到了吗
将chtch改成SocketTimeoutException,依旧捕获不到异常
foreverjoe99 2014-01-24
  • 打赏
  • 举报
回复
我前几天也碰到该问题,我的情况和你大概不一样。 我的是用CXF框架写的web service,之前都正常运行;后面数据库崩了一次,web service也出了问题,客户端一直与服务端连不上,即握手失败。 后面找了很多原因,一直没找到答案,其实程序是正常的。 最后怀疑是网络问题,就直接把服务端换了一台服务器,就跑起来,OK,连接成功。
zyrobert 2014-01-24
  • 打赏
  • 举报
回复
你的异常捕获到了吗
  • 打赏
  • 举报
回复
引用 1 楼 ygycomon 的回复:
clientSocket.set.... 这不是客户端的代码么? 抛出这个异常的意思是,客户端socket阻塞的等待服务器响应,结果因为未知的原因服务器的响应没有到客户端,导致客户端超过了等待时间,就抛出一个异常
clientSocket 是服务端的一个socket对象,我刚刚把catch里面的异常改成了SocketTimeoutException,不知道有没有效 我还想知道,我如何保证客户端断线之前给我发送的数据我都已经接收并保存到文件里了
致知Fighting 2014-01-24
  • 打赏
  • 举报
回复
clientSocket.set.... 这不是客户端的代码么? 抛出这个异常的意思是,客户端socket阻塞的等待服务器响应,结果因为未知的原因服务器的响应没有到客户端,导致客户端超过了等待时间,就抛出一个异常

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧