问题描述
- 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