`
ljl_xyf
  • 浏览: 636872 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 如何判断Socket已断开

    博客分类:
  • java
阅读更多

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

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

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

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

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

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

分享到:
评论

相关推荐

    Socket判断远端网络是否断开,简单例子

    本文将详细讨论如何通过Socket来判断远端网络是否已经断开,并提供一个简单的例子。 首先,我们需要理解Socket的基本概念。Socket是TCP/IP协议族中的一个抽象概念,它代表了两台机器间的通信连接。一台机器上的...

    java socket客户端断线重连

    java socket client 断线重连的简单实现 有什么意见可以提哦

    JAVA socket收发数据,并支持断网自动连接

    - 如果连续几次心跳包没有收到响应,可以认为连接已断开,启动重连。 6. **线程管理** - 通常,服务器端的`accept()`方法会阻塞,直到有新的连接请求。因此,可以考虑使用多线程处理多个并发的客户端连接。 - ...

    Socket服务器端断开后重新打开,客户端将自动完成链接

    在Java等编程语言中,我们可以使用Socket类来创建服务器端(ServerSocket)和客户端(Socket)。服务器端通常会创建一个ServerSocket,并绑定到特定的IP地址和端口号,然后调用其accept()方法开始监听连接请求。每当...

    Java实现Socket长连接和短连接

    在Java编程中,Socket是网络通信的基础,它允许两个应用程序通过TCP/IP协议进行数据传输。Socket连接分为两种类型:长连接和短连接。这两种连接方式各有特点,适用于不同的应用场景。 **1. 短连接(Short ...

    QT TCP服务端如何判断客户端已断开连接 - 北冥有鱼的博客 - CSDN博客1

    QT提供了丰富的网络编程接口,其中包括`QAbstractSocket`类,该类包含了判断客户端断开连接的方法。 首先,`QAbstractSocket`枚举类型中的`SocketError`定义了各种可能的套接字错误。当客户端主动断开连接时,...

    java的Socket实现的多人聊天程序

    Java的Socket实现的多人聊天程序是一个基于网络通信的项目,主要利用了Java的Socket类来构建客户端和服务端的通信桥梁。Socket是TCP/IP协议的一部分,它提供了两台计算机之间进行数据传输的基础。在这个项目中,...

    Java应用Socket通讯一对多

    Java应用Socket通讯一对多: ⑴、一对多; ⑵、通过list/map存储连接的socket对象,服务端向所有客户端群发消息,可以修改为服务端向指定客户端发送消息; ⑶、自动定时扫描客户端,移除断开的连接。

    C#和java 之间基于Socket的通信

    本话题主要探讨了两种常用编程语言——Java和C#之间如何利用Socket进行通信。Socket是网络编程的基本接口,允许应用程序通过网络发送和接收数据。以下是关于"Java和C#之间基于Socket的通信"的详细知识点: 1. **...

    java客户端socket与mina服务端通信

    - Java Socket中,可以通过关闭输入/输出流而不是Socket本身来保持连接,直到需要完全断开连接时再关闭Socket。 5. **异常处理**: - 无论是Socket还是Mina,都需要处理可能出现的网络异常,如连接中断、数据传输...

    Java socket聊天软件 服务器和用户分开,可断开重连恢复聊天

    本项目"Java socket聊天软件 服务器和用户分开,可断开重连恢复聊天"是一个典型的实例,它展示了如何使用Java Socket API创建一个支持多人聊天、能够处理断线并自动重连的系统。下面我们将深入探讨其中涉及的关键...

    java socket通信实现

    Java Socket通信实现是一种基于TCP/IP协议的网络通信方式,它允许两台计算机通过互联网进行双向数据传输。在Java中,Socket类和ServerSocket类是实现客户端-服务器模型通信的核心工具。下面将详细介绍Java Socket...

    java上socket通信即时通信界面本

    Java Socket通信是网络编程中的重要一环,它提供了在两台计算机之间建立低级连接的能力,使得它们可以相互通信。在这个"java上socket通信即时通信界面本"中,我们很显然关注的是如何使用Java来构建一个具有图形用户...

    通过java socket实现屏幕网络监控

    1. Java Socket编程基础:包括ServerSocket和Socket的使用,以及连接建立和断开。 2. 图像处理:如何捕获屏幕、编码和解码图像,以及选择合适的编码格式。 3. 多线程编程:在捕获屏幕和发送数据之间保持良好的并发性...

    考试系统 java socket

    - **断开连接**:考试结束后,客户端关闭Socket,断开与服务器的连接。 3. **考试流程**: - **登录验证**:考试开始前,客户端需要提供身份信息(如学号、姓名)进行验证,确保只有授权的考生能参加考试。 - **...

    java编写socket服务端和客户端给予cmpp3.0

    Java 编写基于 CMPP3.0 的 Socket 服务端和客户端是移动通讯领域中常见的技术实践,主要用于实现与移动运营商的短信网关进行数据交互。CMPP(China Mobile Short Message Peer-to-Peer)是中国移动制定的一种短消息...

    如何判断SOCKET通信中,客户端在10s内未发送数据或者未收到服务器发送的数据,自动断开.doc

    ### 如何判断SOCKET通信中,客户端在10秒内未发送数据或未收到服务器发送的数据,自动断开 在本文档中,我们将探讨一种机制,即如何在SOCKET长连接通信中判断客户端在一定时间内(例如10秒)是否收到来自服务器的...

    java Socket 编程源码

    Java Socket编程是网络编程的基础,它提供了在Java中进行低级网络通信的接口。Socket是TCP/IP协议族的一部分,用于实现客户端与服务器之间的双向通信。在这个"java TCP_IP Socket 编程"源码中,我们可以深入理解...

    java socket 长连接实例

    另一种方法是使用心跳机制,即客户端和服务器定期交换特定的消息,如果某方未收到这些消息,就可判断对方可能已掉线。 在实现这个实例中,`TestServer.java`很可能是服务器端的代码,它会监听特定的端口,接收来自...

    基于Java的Socket服务器,简单实现

    本篇将详细解析基于Java实现的`Socket`服务器,包括`ServerSocket`的使用、客户端连接处理以及超时机制。 `Socket`是Java网络编程的基础,它代表了两台机器间的一个网络连接。`ServerSocket`则是服务器端用来监听...

Global site tag (gtag.js) - Google Analytics