通常检查服务器联通 使用ping命令,java代码实现如下:
方法一:
JAVA里的PING是在JDK 1.5后用了新的函数isreachable()函数去实现,但是结果通常返回false
原因:此方法用于测试是否可以达到该地址。实现尽最大努力试图到达主机,但防火墙和服务器配置可能阻塞请求,使其在某些特定的端口可以访问时处于不可到达状态。如果可以获得权限,则典型实现将使用 ICMP ECHO REQUEST;否则它将试图在目标主机的端口 7 (Echo) 上建立 TCP 连接。
public static boolean isOnline(String hostname) {try {InetAddress ia;boolean isonline = false;ia = InetAddress.getByName(hostname);// 例如:www.baidu.comisonline = ia.isReachable(1500); //超时时间1.5秒return isonline;} catch (UnknownHostException e) {// TODO Auto-generated catch blockSystem.out.println("address:" + hostname + " is not unknown");} catch (IOException e) {// TODO Auto-generated catch blockSystem.out.println("address:" + hostname + " is not reachable");}return false;}
方法二(推荐):
使用socket 对端口做
TELNET操作, 结果比较准确
public static boolean isOnline(String hostname, int port) {Socket server = null;try {server = new Socket();InetSocketAddress address = new InetSocketAddress(hostname, port);//例如 www.baidu.com 80server.connect(address, 3000);System.out.println("ok!");return true;}catch (UnknownHostException e) {System.out.println("wrong!");e.printStackTrace();} catch (IOException e) {System.out.println("wrong");e.printStackTrace();}return false;}