服务器-java代码判断本机是否连接上外网

问题描述

java代码判断本机是否连接上外网

需要通过代码判断本地网络是否连接正常,正常情况下通过activeMQ的应答机制,服务器可以正常向客户端推送消息,客户端通过队列监听接收activeMQ推送的消息。
现在是问题是网络中断后无法请求数据,当检查到网络重连后需要调用接口重新请求服务器发送数据,现在的问题就是想要判断出网络的断开和重连。

解决方案

最简单的就是轮询。寻找一个外网上的主机作为参照,能连上就是联网,否则就是不联网。
你提出的思路有问题,如果网络在网关或者路由器断开,没法判断。

解决方案二:

String host = "202.108.22.5";
int timeOut = 3000; //超时应该在3钞以上
boolean status = InetAddress.getByName(host).isReachable(timeOut);
当返回值是true时,说明host是可用的,反正则不可。

解决方案三:

开个线程周期性连接一个服务器,然后判断服务器返回等。基本就是这种机制。

解决方案四:

一般都是心跳包吧,如果,收不到就说明和服务器和客户端断开了

解决方案五:

用java执行“ping”,分析看是否断网了

时间: 2024-11-16 19:09:44

服务器-java代码判断本机是否连接上外网的相关文章

mysql-怎么通过java代码实现对数据库的连接

问题描述 怎么通过java代码实现对数据库的连接 通过java代码如何实现对数据库的增删改查,怎么理解Driver?具体的实现过程请求大神解答-jdbc 解决方案 public class DBTool { //sql 2005 protected static String dbClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; protected static String dbUrl = "jdbc:s

java-如何通过Java代码判断一个IMEI号是正确的!非常感谢!!!

问题描述 如何通过Java代码判断一个IMEI号是正确的!非常感谢!!! 如何通过一个Java方法实现判断IMEI号的正确性,不用正则表达式. 根据接收到的IMEI号验证它是一个IMEI号而非随便写的一个号码. 网上有好多验证手机号码,身份证号码,邮箱号码等等等的验证,好像就没怎么搜索到验证IMEI号的. 解决方案 网上有好多验证手机号码,身份证号码,邮箱号码等等等的验证 其实这些验证也只是格式上.形式上的验证,而不是实际的验证.实际要想知道IMEI号,包括电话.身份证.邮箱等等,都需要和对应的

c#窗体-C#如何判断手机是否已经连接上电脑,如何获取手机的数据。

问题描述 C#如何判断手机是否已经连接上电脑,如何获取手机的数据. C#如何判断手机是否已经连接上电脑,如何获取手机的数据.我查了资料,用了安卓SDK中的adb.exe 通过命令获取手机信息,但是我不知道怎样获取它返回的信息

mysql c# 代理-使用代理上网情况下c#如何连接到外网mysql进行查询

问题描述 使用代理上网情况下c#如何连接到外网mysql进行查询 开发环境:vs2010语言:c# 网络环境:使用代理上网由于公司设置不能直接上网,只能通过设置代理进行访问网络.请问c#中如何写mysql连接语句

如何判断iph.AddressList[]里哪个是外网地址那个是内网地址?

问题描述 IPHostEntryiph=newIPHostEntry();iph=Dns.GetHostEntry("");上面执行完后,如果已通过ADSL拨号连上internet,iph.AddressList[]数组回有两个地址,一个是本地地址,一个是外网地址,但我如何判断哪个是外网地址呢?感激涕零 解决方案 解决方案二:本地的应该是192.168.xxx.xxx的吧外网的应该就不是这样的,你把得到IPAddress[]进行判断一下看看解决方案三:第一个是本地,第二个外网

诊断Java代码: 消除包间的耦合关联

测试优先编程(test-first programming)中反复遇到的一个问题是,似乎不可能对程序的许多部分进行自动测试.尤其当程序在很大程度上要利用外部资源和库时,似乎很难对它进行测试,因为没有很好的方法来模拟程序与这些外部资源的连接. 然而,虽然只使用 Java 代码很难测试这样的程序,但有一种类型的编程(带有开发工具)可以解决这个问题 ― 基于组件的编程. 基于组件的编程和 Java 语言 我所说的基于组件的编程是指什么?我只是指,编程时程序的各个单元处于分布状态,而不是象 JavaBe

Java中判断字符串是否为数字的五种方法 (转)

推荐使用第二个方法,速度最快. 方法一:用JAVA自带的函数 Java代码   public static boolean isNumeric(String str){      for (int i = str.length();--i>=0;){         if (!Character.isDigit(str.charAt(i))){        return false;       }      }      return true;    }   public static b

java swing判断双击Shift

如何判断是否按下了Shift键? Java代码   /***       * 判断是否仅仅按下了Shift       * @param e       * @return       */       public static boolean isJustShiftDown(KeyEvent e){           int keyCode=e.getKeyCode();           return e.isShiftDown()&&keyCode!= KeyEvent.VK_

Java servlet判断是否是移动设备

使用Java  servlet如何判断访问介质是否是移动设备呢? 移动设备指手机和pad Java代码   /**       * 判断手机的操作系统 IOS/android/windows phone/BlackBerry       *        * @param UA       * @return       */       public static ClientOsInfo getMobilOS(String UA) {           UA=UA.toUpperCase(