这篇文章主要介绍了java如何检查服务器连通,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
首先要了解一下ping的内容。
概述
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议;回声请求消息给目的地并报告是否收到所希望的ICMPecho (ICMP回声应答)。它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。
ping指的是端对端连通,通常用来作为可用性的检查, 但是某些病毒木马会强行大量远程执行ping命令抢占你的网络资源,导致系统变慢,网速变慢。严禁ping入侵作为大多数防火墙的一个基本功能提供给用户进行选择。通常的情况下你如果不用作服务器或者进行网络测试,可以放心的选中它,保护你的电脑。
通常检查服务器连通 使用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.com isonline = ia.isReachable(1500); //超时时间1.5秒 return isonline; } catch (UnknownHostException e) { // TODO Auto-generated catch block System.out.println("address:" + hostname + " is not unknown"); } catch (IOException e) { // TODO Auto-generated catch block System.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 80 server.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; }
感谢你能够认真阅读完这篇文章,希望小编分享的“java如何检查服务器连通”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。