关于socket重连的问题

fanzhijun301 2009-03-11 08:21:11
请问,有没有关于socket重新连接的代码,今天我试了好多次都没有解决这个问题我的实验如下:
1. 我想在连接后如果在一段时间内收不到数据就判断连接是否断开,判断的方式是直接把服务端停掉,但是用了isClosed()和isConnect()方法都不能测得,即使我把服务端停掉,isClosed()返回的依然是false, isConnect()方法返回的依然是true;
2. 上面判断连接是否断开的想法失败后我想另一个办法就是不管连接是否断开,如果一段时间内没有收到数据就把socket进行重新连接,但是重新连接后(如果服务器本身没有停掉,只是隔时间长没有发数据)就不能再得到服务器端的数据。

请问谁有这方面的代码,或者想法,谢谢
...全文
501 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangpeixv 2009-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 majin777 的回复:]
ServerSocket的这个方法void setSoTimeout(int timeout)
启用/禁用带有指定超时值,以毫秒为单位。
[/Quote]
我觉得两个方面吧
一个是判断超时,超时了就关了这个socket
一个是捕获异常,主要是由于客户端断开时的异常
我目前用的这两个方法

期待更好的回答
skyhits1921 2009-03-12
  • 打赏
  • 举报
回复
mark一下,我也由这方面的问题。
weizhaozhe 2009-03-12
  • 打赏
  • 举报
回复
每次断开由自己控制,若断开会抛出EOF之类的异常,然后在处理时 重新连接就行了吧
Coolfatman 2009-03-12
  • 打赏
  • 举报
回复
如果长连接可以考虑使用心跳测试。
如果短连接可以设定超时。
gwjupiter 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 fanzhijun301 的帖子:]
请问,有没有关于socket重新连接的代码,今天我试了好多次都没有解决这个问题我的实验如下:
1. 我想在连接后如果在一段时间内收不到数据就判断连接是否断开,判断的方式是直接把服务端停掉,但是用了isClosed()和isConnect()方法都不能测得,即使我把服务端停掉,isClosed()返回的依然是false, isConnect()方法返回的依然是true;
2. 上面判断连接是否断开的想法失败后我想另一个办法就是不管连接是否断开,如果一段时间内没…
[/Quote]

请问你使用的是nio吗
铁匠梁老师 2009-03-11
  • 打赏
  • 举报
回复
多看API有好处
majin777 2009-03-11
  • 打赏
  • 举报
回复
ServerSocket的这个方法void setSoTimeout(int timeout)
启用/禁用带有指定超时值,以毫秒为单位。
joelwx 2009-03-11
  • 打赏
  • 举报
回复
看不太明白.
如果一段时间内客户端没数据到服务器来,就把这个客户端的连接断开.是不是这样啊?
看你的说明,好像你把ServerSocket给关了吧?
而与客户的连接还在,所以那二个方法返回的不是你预想的值.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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