java socket 判断断网_java socket 判断对方在线或离线、断线

1 在客户端和服务器端做心跳检测(这个后来我放弃了)

2 客户端中断连接,服务器会抛出异常,利用这点

3这是我为什么不用心跳包的原因,因为不需要了。 有的时候,我们可能网络突然中断了。

但是服务器依然会监听那个连接。而且很长都不抛异常。

这时候只要设置超时异常就行了。

socket.setSoTimeout(5000);

这样不管程序是不是阻塞在read方法,还是给客户端发包。

对方只要5秒没有响应,就会抛出如下异常。

driver客户端连接已断开! java.net.SocketTimeoutException: Read timed out  at java.net.SocketInputStream.socketRead0(Native Method)  at java.net.SocketInputStream.read(Unknown Source)  at java.net.SocketInputStream.read(Unknown Source)  at java.io.BufferedInputStream.fill(Unknown Source)  at java.io.BufferedInputStream.read(Unknown Source)  at java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source)  at java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source)  at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)  at java.io.ObjectInputStream.readClassDesc(Unknown Source)  at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)  at java.io.ObjectInputStream.readObject0(Unknown Source)  at java.io.ObjectInputStream.readObject(Unknown Source)  at servers.driverThread.run(driverThread.java:42)  at java.lang.Thread.run(Unknown Source) code:code0101,数据库已经更新为离线状态. 检测异常时间:5755 status:false —————————————————————— driver客户端连接已关闭! client客户端连接已断开! 检测异常时间:5000 —————————————————————— client连接已关闭! java.net.SocketTimeoutException: Read timed out  at java.net.SocketInputStream.socketRead0(Native Method)  at java.net.SocketInputStream.read(Unknown Source)  at java.net.SocketInputStream.read(Unknown Source)  at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)  at sun.nio.cs.StreamDecoder.implRead(Unknown Source)  at sun.nio.cs.StreamDecoder.read(Unknown Source)  at java.io.InputStreamReader.read(Unknown Source)  at java.io.BufferedReader.fill(Unknown Source)  at java.io.BufferedReader.readLine(Unknown Source)  at java.io.BufferedReader.readLine(Unknown Source)  at servers.clientThread.run(clientThread.java:38)  at java.lang.Thread.run(Unknown Source)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 可重入读写锁 ReentrantReadWriteLock 详解

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt206 读写锁 ReadWriteLock读写锁维护了一对相关的锁,一个用于只读操作,一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的…

将JPA Hibernate与OptaPlanner集成

我们一直在改进OptaPlanner与JEE其余部分的集成,因此,构建可以正常工作的最终用户应用程序更加容易。 让我们看一下改进的JPA Hibernate集成。 基础 JPA Hibernate和OptaPlanner都可以在POJO(普通的旧Java对象)上工作&#xff0c…

c java 系统开发_java开发系统内核:使用C语言开发系统应用程序

更详细的讲解和代码调试演示过程,请参看视频用java开发C语言编译器如果你对机器学习感兴趣,请参看一下链接:机器学习:神经网络导论我们的操作系统通过增添内核接口导出机制后,已经可以作为平台,运行应用程序…

php 跨二级域名 设置cookie

登入也设置cookie setcookie(user_id, authlogin("user_id", "ENCODE"), time()(3600*24*30), "/", ".lfb365.com"); authlogin()方法为将user_id进行编码,非内置方法 退出页清除cookie setcookie("user_id", &q…

java jbutton文字_java JButton 改变按钮文字

展开全部因为 i 和 j 是局部变量,62616964757a686964616fe78988e69d8331333337383933在内部类中不允许访问局部变量,如果要访问必须添加 final。所以有个折中的办法,再声明两个中间变量,并定义为 final 类型的,你在内部…

抑制java对修饰符的检查_Java 7对抑制异常的支持

抑制java对修饰符的检查在JDK 7中 ,向Throwable类( Exception和Error类的父类)添加了一个新的构造函数和两个新方法。 添加了新的构造函数和两个新方法以支持“抑制的异常”(不要与吞咽或忽略异常的不良做法相混淆)。 …

win7下装ubuntu14.04双系统

一、给ubuntu准备安装空间计算机--右键--管理-磁盘管理--选择一个空余空间较多的磁盘--右键--压缩卷--压缩大概60G空间(接下来ubuntu就会装到这60G里面)二、制作启动u盘用ultraiso将ubuntu14.04镜像写入u盘,制作启动u盘三、u盘启动&#xff0…

java bundle_java.util.ResourceBundle国际化用法详解

初识国际化和ResourceBundle这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化,详细的介绍可以看本文的最后。比如对于“取消”,中文中我们使用“…

编写基于事件的CQRS读取模型

关于事件源和CQRS的讨论似乎通常集中在CQRS上下文中的整体系统架构或领域驱动设计的各种形式。 但是,尽管也有一些有趣的考虑,但读取模型经常被忽略。 在本文中,我们将展示一个通过使用事件流填充视图模型的示例实现。 总览 读取模型的想法…

JSP数据交互

JSP数据交互 一、jsp中java小脚本 1.<% java代码段%> 2.<% java表达式%>不能有分号 3.<%!成员变量和函数声明%>二、注释 1.<!--html注释-->客户端可以看到 2.<%--jsp注释--%>客户端不能看到三、jsp页面的的执行过程 1.客户端请求&#xff08;输入…

java else if和switch_如何优雅地优化代码中的的if else和switch

引言一般来说&#xff0c;随着我们项目的迭代以及业务的越来越复杂&#xff0c;项目中的分支判断会原来越多。当项目中涉及到复杂的业务判断或者分支逻辑时&#xff0c;我们就需要考虑是否需要对项目进行重构了&#xff0c;或者if else和switch case是否能够满足当前项目的复杂…

jQuery data

一个简单的Cache (function(){var __cache {},Cache {get: function(__name){return __cache[__name] || undefined;}, set: function(__name, __value){return (__cache[__name] __value)}};this.Cache Cache; })();alert(Cache.get("name")); //undefine…

flink 复杂事件_复杂的(事件)世界

flink 复杂事件这篇博客文章试图总结CEP领域中的技术&#xff0c;并介绍它们的主要功能和不足。 有时似乎过度使用了CEP一词&#xff08;就像ESB一样&#xff09;&#xff0c;下面的内容反映了我们对它的理解和理解。 ESPER&#xff08; http://esper.codehaus.org/ &#xff0…

设计模式(中介者模式-对象去耦)

声明&#xff1a;本系列文章内容摘自《iOS设计模式》 中介者模式 用一个对象来封装一系列对象的交互方式。中介者使个对象不需要显式地相互调用&#xff0c;从而使其耦合松散&#xff0c;而且可以独立地改变它们之间的交互。 何时使用中介者模式 1.对象间的交互虽定义明确然而非…

java flash截图_求大神们帮助, 如何在java中实现文字数据转换成图片或flash显示

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{response.setContentType("image/jpeg");createImage(response.getOutputStream());} private …

Spring Cloud Sidecar –节点初始化

在上一篇博客文章中&#xff0c;我描述了Sidecar应用程序如何用于在Eureka中注册Cassandra节点&#xff0c;并且更普遍地可以用于在Eureka中注册任何非JVM应用程序。 在本文中&#xff0c;我将介绍应用程序如何查询Sidecar注册节点。 发现注册的节点–初始化后 如果在Bean初始…

windows服务器的DDOS防御,

抵御 SYN 攻击 SYN 攻击利用了 TCP/IP 连接建立机制中的安全漏洞。要实施 SYN 洪水攻击&#xff0c;攻击者会使用程序发送大量 TCP SYN 请求来填满服务器上的挂起连接队列。这会禁止其他用户建立网络连接。 要保护网络抵御 SYN 攻击&#xff0c;请按照下面这些通用步骤操作&…

java传.net datetime_.net调java写的webService传过去的datetime,int等非string类型为null的问题...

使用.NET向webService传double、int、DateTime 服务器得到的数据时null的问题 收藏用C#.NET调用Java开发的WebService时&#xff0c;先在客户端封装的带有int属性的对象&#xff0c;当将该对象传到服务器端时&#xff0c;服务器端可以得到string类型的属性值&#xff0c;却不能…

arcengine,深入理解游标Cursors,实现数据的快速查找,插入,删除,更新

风过无痕 原文 arcengine,深入理解游标Cursors&#xff0c;实现数据的快速查找&#xff0c;插入&#xff0c;删除&#xff0c;更新 深入理解游标Cursors&#xff0c;实现数据的快速查找&#xff0c;插入&#xff0c;删除&#xff0c;更新 1、查找数据Search Cursors //by yl …

guice 框架_玩! 框架+ Google Guice

guice 框架在我目前正在工作的项目中&#xff0c;我们开始使用Google Guice。 对于那些不知道的人&#xff0c; Google Guice是一个依赖项注入框架。 依赖项注入的基本思想是提供一个其依赖的类&#xff0c;而不是使依赖类负责实例化它所依赖的对象。 Play具有用于整合Guice的模…