• 技术文章 >Java >java教程

    java判断socket服务端是否断开连接

    VV2020-01-16 09:18:00原创1042

    可以使用socket类中的sendUrgentData方法,该方法会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的。

    于是,下面一段代码就可以判断远端是否断开了连接:

    try{
        socket.sendUrgentData(0xFF);
    }catch(Exception ex){
        reconnect();
    }

    (免费学习视频教程分享:java视频教程

    用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入门教程

    以上就是java判断socket服务端是否断开连接的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:java8 DateTimeFormatter的使用 下一篇:java下载文件中文文件名乱码
    大前端线上培训班

    相关文章推荐

    • java泛型中T和?的区别• java中的private方法可以继承么• java中的代理模式与装饰者模式的区别• 关于java中变量命名规范的详细介绍

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网