基于Java判斷網(wǎng)絡是否正常代碼實例
判斷網(wǎng)絡是否正常使用
代碼如下
/**
* 判斷網(wǎng)絡是否正常
* @return
*/
public static boolean isConnect(String ipPath){
//定義其返回的狀態(tài),默認為false,網(wǎng)絡不正常
boolean connect = false;
/**
* 用Runtime.getRuntime().exec()來調(diào)用系統(tǒng)外部的某個程序,
* 他會生成一個新的進程去運行調(diào)用的程序。
* 此方法返回一個java.lang.Process對象,
* 該對象可以得到之前開啟的進程的運行結果,
* 還可以操作進程的輸入輸出流。
*/
Runtime runtime = Runtime.getRuntime();
Process process;
try {
process = runtime.exec("ping " + ipPath);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"GBK");
BufferedReader br = new BufferedReader(isr);
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("返回值為:"+sb);
is.close();
isr.close();
br.close();
if (null != sb && !sb.toString().equals("")) {
String logString = "";
if (sb.toString().indexOf("TTL") > 0) {
// 網(wǎng)絡暢通
connect = true;
} else {
// 網(wǎng)絡不暢通
connect = false;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return connect;
}
TTL:生存時間
指定數(shù)據(jù)報被路由器丟棄之前允許通過的網(wǎng)段數(shù)量。
TTL 是由發(fā)送主機設置的,以防止數(shù)據(jù)包不斷在 IP 互聯(lián)網(wǎng)絡上永不終止地循環(huán)。轉發(fā) IP 數(shù)據(jù)包時,要求路由器至少將 TTL 減小 1。
使用PING時涉及到的 ICMP 報文類型
一個為ICMP請求回顯(ICMP Echo Request)
一個為ICMP回顯應答(ICMP Echo Reply)
TTL 字段值可以幫助我們識別操作系統(tǒng)類型
測試
public static void main(String[] args) {
System.out.println(HttpUtil.isConnect("220.181.111.188"));
}
控制臺顯示
返回值為:正在 Ping 220.181.111.188
具有 32 字節(jié)的數(shù)據(jù):
來自 220.181.111.188 的回復: 字節(jié)=32 時間=23ms TTL=53
來自 220.181.111.188 的回復: 字節(jié)=32 時間=23ms TTL=53
來自 220.181.111.188 的回復: 字節(jié)=32 時間=24ms TTL=53
來自 220.181.111.188 的回復: 字節(jié)=32 時間=23ms
TTL=53220.181.111.188 的 Ping 統(tǒng)計信息:
數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
最短 = 23ms,最長 = 24ms,平均 = 23mstrue
Process finished with exit code 0
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
MyBatis-Plus使用ActiveRecord(AR)實現(xiàn)CRUD
本文將結合實例代碼,介紹MyBatis-Plus使用ActiveRecord(AR)實現(xiàn)CRUD,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧2021-07-07
如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回
這篇文章主要介紹了如何利用SpringAOP的返回通知處理數(shù)據(jù)加密返回,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2024-12-12

