java檢查服務器的連通兩種方法代碼分享
首先要了解一下ping的內(nèi)容。
概述
PING (Packet Internet Groper),因特網(wǎng)包探索器,用于測試網(wǎng)絡連接量的程序。Ping發(fā)送一個ICMP(Internet Control Messages Protocol)即因特網(wǎng)信報控制協(xié)議;回聲請求消息給目的地并報告是否收到所希望的ICMPecho (ICMP回聲應答)。它是用來檢查網(wǎng)絡是否通暢或者網(wǎng)絡連接速度的命令。作為一個生活在網(wǎng)絡上的管理員或者黑客來說,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:利用網(wǎng)絡上機器IP地址的唯一性,給目標IP地址發(fā)送一個數(shù)據(jù)包,再要求對方返回一個同樣大小的數(shù)據(jù)包來確定兩臺網(wǎng)絡機器是否連接相通,時延是多少。
ping指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強行大量遠程執(zhí)行ping命令搶占你的網(wǎng)絡資源,導致系統(tǒng)變慢,網(wǎng)速變慢。嚴禁ping入侵作為大多數(shù)防火墻的一個基本功能提供給用戶進行選擇。通常的情況下你如果不用作服務器或者進行網(wǎng)絡測試,可以放心的選中它,保護你的電腦。
通常檢查服務器連通 使用ping命令,java代碼實現(xiàn)如下:
方法一:
JAVA里的PING是在JDK 1.5后用了新的函數(shù)isreachable()函數(shù)去實現(xiàn),但是結果通常返回false
原因:此方法用于測試是否可以達到該地址。實現(xiàn)盡最大努力試圖到達主機,但防火墻和服務器配置可能阻塞請求,使其在某些特定的端口可以訪問時處于不可到達狀態(tài)。如果可以獲得權限,則典型實現(xiàn)將使用 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檢查服務器的連通兩種方法代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
如有不足之處,歡迎留言指出。
相關文章
詳解spring cloud構建微服務架構的網(wǎng)關(API GateWay)
這篇文章主要介紹了詳解spring cloud構建微服務架構的網(wǎng)關(API GateWay),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Java使用Thread和Runnable的線程實現(xiàn)方法比較
這篇文章主要介紹了Java使用Thread和Runnable的線程實現(xiàn)方法,結合實例形式對比分析了Java使用Thread和Runnable實現(xiàn)與使用線程的相關操作技巧,需要的朋友可以參考下2019-10-10
Java 用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解
這篇文章主要介紹了用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解之上帝之火,普羅米修斯的崛起,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Java中java.lang.ClassCastException異常原因及解決方法
大家好,本篇文章主要講的是Java中java.lang.ClassCastException異常原因及解決方法,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
100-200之間所有素數(shù)求和程序代碼(二個版本)
寫一個求100-200之間素數(shù),并求和的程序,大家參考使用吧2013-11-11

