本篇文章为大家展示了java中怎么判断socket服务端是否断开连接,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
可以使用socket类中的sendUrgentData方法,该方法会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的。
于是,下面一段代码就可以判断远端是否断开了连接:
try{
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}
用ping实现:
package com.csdn.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class test {
static BufferedReader bufferedReader;
public static void main(String[] args) throws IOException {
try {
Process process = Runtime.getRuntime().exec("ping 192.168.1.104");//判断是否连接的IP;
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String connectionStr = "";
while ((connectionStr = bufferedReader.readLine()) != null) {
System.out.println(connectionStr);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
bufferedReader.close();
}
}
}
注意:此方法有一个严重的不足之处,就是你只能判断对方是否连接网络,而不能判断客户端是否开启。
其实在通过socket.getoutstream和socket.getinputstream流对客户端发送、接受信息时如果socket没连接上是会抛出异常的,这也就是为什么Java会要求网络编程都要写在try里面,所以只要在catch里面写入客户端退出的处理就行了。
上述内容就是java中怎么判断socket服务端是否断开连接,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.xuebuyuan.com/3278361.html