socket.sendUrgentData判断网络远端是否断开连接

摘要:
最后又回到socket类,发现有一个方法sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的,太好了,正是我需要的!

来自于http://chenke1215.blog.163.com/blog/static/124414520103611222617/

最近在开发中遇到一个问题,就是如何判断远端服务器是否已经断开连接,如果断开那么需要重新连接。

首先想到socket类的方法isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。

然后想到是否可以通过OutputStream发送一段测试数据,如果发送失败就表示远端已经断开连接,类似ping,但是这样会影响到正常的输出数据,远端无法把正常数据和测试数据分开。

最后又回到socket类,发现有一个方法sendUrgentData,查看文档后得知它会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的,太好了,正是我需要的!

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

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

免责声明:文章转载自《socket.sendUrgentData判断网络远端是否断开连接》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS开发——OC篇&纯代码退出键盘php array_map/array_walk/foreach/for 处理速度比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# Socket

------------------------------------------------------------------------------------------------------------------------------------------- using System;using System.Text;using Sy...

在Java中使用Socket模拟客户端和服务端(多线程)

1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, int port)throws UnknownHostException, IOException Socket(InetAddress address, in...

前后端分离的思考与实践(六)

原文出处: 淘宝UED - 筱谷    Nginx + Node.js + Java 的软件栈部署实践 起 关于前后端分享的思考,我们已经有五篇文章阐述思路与设计。本文介绍淘宝网收藏夹将 Node.js 引入传统技术栈的具体实践。 淘宝网线上应用的传统软件栈结构为 Nginx + Velocity + Java,即: 在这个体系中,Nginx 将请求转发给...

关于socket通信bind()返回值错误:10049

前几天偶尔收到一个朋友的求救,要编写一个IPV6的socket编程 开始以为这个问题很容易,因为socket已经兼容IPV4和IPV6的,改下那几个接口就可以了 然后....被卡住了.... 修改了参数为IPV6的参数以后,在bind的时候始终包10049错误. 按照MSDN的说法,10049的意思表示找不到那个IP. 但是我服务器端bind监听的sock...

socketserver模块

  虽说用Python编写简单的网络程序很方便,但复杂一点的网络程序还是用现成的框架比较好。这样就可以专心事务逻辑,而不是套接字的各种细节。SocketServer模块简化了编写网络服务程序的任务。同时SocketServer模块也是Python标准库中很多服务器框架的基础。   socketserver模块可以简化网络服务器的编写,Python把网络服务...

rpcbind.service启动失败

新装的服务器,启动rpcbind.service通常失败,执行下面的两个命令经常卡死,一直不返回,也不报错 #systemctl start nfs-server.service #systemctl start rpcbind.service 偶尔执行以下命令,却又可以 #systemctl restart rpcbind.service 关机偶尔会卡在...