java 怎么判断socket已经断开

最近的项目中需要判断远处的socket主机是否不在了,然后进行重新连接,由于socket的read是阻塞方法,当远程主机异常断开之后,read将永远阻塞,可以设置sotimeout使得read一段时间之后醒过来再判断socket是否是正常的,但是难点就是怎么判断?网上的方法:

1. 自己写一段测试数据。

不可行,协议是固定的,我自己不能添加任何数据。

2. 使用sendUrgentData

http://ivan4126.blog.163.com/blog/static/20949109220135284278806/

可行。但是注意:

  • 刚刚断开的时候sendUrgentData没有任何异常,我超时设置为60s,然后sendUrgentData判断连接是否有效,但是直到5--10次之后也就是至少5分钟之后sendUrgentData才会报错抛出异常,之前几次sendUrgentData不会出错。具体原因未知。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值