java 判断tcp连接断开连接_网络通信之检测远端连接是否断开连接

判断对方是否断开连接:

一、方法层面的实现:

1,使用输入流的read方法:

输入流的read(byte[] ,int ,int) 方法,表示从当前的通道中读取数据,具体读取到的数据有返回的int值决定;这里的返回值和抛出的异常很重要,如果抛出IOException异常,很明显连接已经断开;

返回值说明:

针对于基于tcp/ip协议的socket连接说明:

如果没有设置socket的soTimeout属性,那么该方法将是一个阻塞方法,可以通过设置socket的soTimeout属性,让read方法退出。

注意:read方法如果timeout将以抛出socketTimeoutException异常;

客户端:

如果对方断开连接,客户端的read方法将返回-1;

服务器端:

如果对方断开连接,服务器端的read方法将抛出IOException异常;

提示:

建议使用这种方式,netty底层源码就是使用的这种方式实现的;

2,使用socket 的sendUrgentData(int) :

注意:不建议使用此种方式,因为使用该方式有很多不可预测的情况;

通常情况是:接收端没有开启socket的SO_OOBINLINE属性,那么使用sendUrgentData(int)测试连接时,在发送17次(windows测试数据)时会发生异常;而如果接收端


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部