可以使用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中文网其他相关文章!

Spring框架中SerializableTypeWrapper类的作用在Spring框架的ResolvableType类中,我们常常会看到SerializableTypeWrapper的身影。...

在SpringRetry中如何正确配置@Retryable注解的监听器?在使用Spring...

使用SpringWebFlux实现LLMGateway的容灾重试机制在构建一个LLMgateway时,常常需要使用Spring...

关于曲线积分中变量替换的疑问本文将针对一个曲线积分计算中变量替换的步骤进行详细解释。提问者在计算一...

微信小程序申请流程及费用详解朋友委托开发微信小程序商城,在申请过程中遇到一些关于费用和流程的问题,...

Java缓存数据无法获取的原因分析及优化方案在Java项目中,将大量数据缓存到内存中以便快速访问是一个常见的�...

深入Java:值得探索的虚拟机世界很多Java开发者在掌握了基础语法和常用框架后,都希望进一步提升自己的技术�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。