`
feikiss
  • 浏览: 99328 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java client端如何判断server端socket是否已经断开

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

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

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

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

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

try{
      socket.sendUrgentData(0xFF);
}catch(Exception ex){
      reconnect();
}
分享到:
评论

相关推荐

    Android开发,Socket Client端和Socket Server端数据发送和接收

    Socket分为客户端(Socket Client)和服务器端(Socket Server),它们共同构成了基于TCP/IP协议的通信模型。本篇文章将详细探讨Android环境下如何进行Socket Client端和Socket Server端的数据发送与接收。 1. **...

    基于JavaFx的Socket多线程通讯程序实例(含:Server端和Client端)

    在本实例中,我们将深入探讨如何使用JavaFX结合Socket编程实现一个多线程的通信程序,包括Server端和Client端。 首先,让我们了解Socket编程的基本概念。Socket是网络通信中的一个端点,它允许两个远程系统通过网络...

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

    Socket client = server.accept(); new Thread(() -> { DataInputStream in = new DataInputStream(client.getInputStream()); DataOutputStream out = new DataOutputStream(client.getOutputStream()); ...

    Java 在Client-Server 网络中的应用

    ### Java在Client-Server网络中的应用详解 #### 一、Java网络应用模型 随着Java语言的广泛应用及其与互联网的高度融合,Java已经成为构建现代信息系统的重要工具之一。Java的特点,如跨平台性、面向对象的设计理念...

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

    在使用QT进行TCP服务器开发时,一个常见的需求是检测客户端是否已经断开了连接。这篇文章将介绍如何在QT中实现这一功能,特别是在C++环境中。QT提供了丰富的网络编程接口,其中包括`QAbstractSocket`类,该类包含了...

    SOCKET TCP 文件传输 客户端 服务器端 client svever

    在这个项目中,"Socket文件传输"可能包含了客户端和服务器端的源代码文件,如client.c或client.py,server.c或server.py等。这些文件通常包含了上述的TCP文件传输逻辑,通过编译或运行可以实现文件的双向传输。 ...

    Telnet-Server-Client.rar_Telnet Server Java_java socket telnet_

    本资源"Telnet-Server-Client.rar"包含了一个用Java实现的`Telnet`服务器和客户端,这对于理解网络编程和`Socket`通信具有很高的学习价值。 首先,我们要了解`Java`中的`Socket`编程。`Socket`是网络通信的基础,它...

    client-server-socket.rar_Server

    本文将详细解析"client-server-socket.rar_Server"中的核心知识点,包括服务器端如何为客户端提供数学计算服务和时间查询服务,以及在实现这些服务时涉及到的Socket编程。 首先,我们来理解客户端-服务器模型。这种...

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

    总的来说,Java的`Socket`和`ServerSocket`类为网络通信提供了便利,结合多线程和超时机制,可以构建出稳定可靠的服务器端程序。在实际项目中,根据需求可能还需要考虑异常处理、数据编码解码、安全加密等方面,以...

    Android socket上传大文件client + server

    "Android socket上传大文件client + server"这个项目就是针对这种情况设计的,它通过自定义的TCP通信协议实现了大文件的分块传输,支持断点续传,以确保文件传输的稳定性和效率。 首先,我们来看一下Socket通信的...

    java_Socket多线程服务器源代码介绍

    Java中的Socket编程主要包括两个部分:客户端Socket和服务器端Socket。 - **客户端Socket**:通常用于发起连接请求,并与服务器建立通信。 - **服务器端Socket**:负责监听客户端的连接请求,并接收来自客户端的...

    Socket-TCP-Echo.rar_java tcp socket_tcp server java

    3. **TCP Server**: 在“Socket-TCP-Echo”项目中,服务器端的实现(通常名为Server.java)会创建一个ServerSocket实例,监听指定的端口号。当客户端连接时,它接受连接并创建一个新的Socket对象,通过该Socket与...

    有关Java的Socket编程入门例子

    Java的Socket编程是网络编程的基础,它允许两个网络应用程序之间建立通信链接,进行数据传输。在Java中,Socket是java.net包的一部分,提供了客户端/服务器通信的基本接口。本篇文章将深入探讨Socket编程的基础知识...

    java socket 聊天室

    Java Socket聊天室是一种基于Java网络编程技术实现的通信系统,主要使用了Socket接口来构建客户端与服务器端的连接。在这个项目中,用户通过控制台(console)进行交互,体验类似于简单的在线聊天室。以下是对这个Java...

    Java面试之Socket编程

    Java网络编程是开发分布式应用程序的关键技术之一,其中Socket编程扮演着至关重要的角色。在Java面试中,对Socket编程的理解和应用能力通常是评估开发者技能的重要标准。以下是对Socket编程的详细阐述: 1. **Java ...

    java maven 聚合项目 分模块 socket 双向通信实例demo

    Socket通信通常涉及客户端(Client)和服务器端(Server)。在这个“java socket 双向通信实例demo”中,服务端不仅能够响应客户端的请求,还能主动发送指令给客户端。这种双向通信机制使得应用更灵活,可以用于实时...

    server_client通信程序

    在这个“server_client通信程序”中,我们很可能会看到使用Socket编程实现的实例。Socket是网络编程中的一个接口,允许应用程序通过它来发送和接收数据。 1. **Socket编程基础**: Socket是进程间通信(IPC)的一...

    Java心跳包功能TCP实现

    然而,当网络环境中出现长时间无数据交换时,一些中间设备可能会认为连接已经断开,从而关闭连接。心跳包就是为了解决这一问题而设计的,它定期发送一个简短的数据包,用来告知对端连接仍然活跃。 在Java中实现心跳...

    java--ftp(server_client).rar_FTP CLIENT_FTP server client_ftp_ja

    "FTP server client"可能是指一个包含服务器端和客户端功能的综合项目,使得开发者可以在同一环境中测试和调试FTP通信。Java FTP服务器可能使用了Apache Commons Net库或其他开源库来实现,这些库提供了处理FTP命令...

    Android端socket框架EasySocket

    **Android端Socket框架EasySocket详解** 在Android应用开发中,Socket通信是实现设备间数据传输的重要方式,尤其在需要实时性、低延迟的场景中,如游戏、聊天应用等。EasySocket是一个专为Android设计的轻量级...

Global site tag (gtag.js) - Google Analytics