判断网络远端服务器是否断开连接(心跳连接:socket.sendUrgentData)
Posted 庚拓天下
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断网络远端服务器是否断开连接(心跳连接:socket.sendUrgentData)相关的知识,希望对你有一定的参考价值。
1.socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,这些方法都是本地端的状态,无法判断远端是否已经断开连接。
2.是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping。但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。
3.回到socket类,发现有一个方法sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的。正是我们需要的!
于是,心跳连接的写法
try{
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}
以上是关于判断网络远端服务器是否断开连接(心跳连接:socket.sendUrgentData)的主要内容,如果未能解决你的问题,请参考以下文章
Linux中TCP通信中 send函数 如何判断 何时断开连接了