基于Java判斷網(wǎng)絡(luò)是否正常代碼實(shí)例
判斷網(wǎng)絡(luò)是否正常使用
代碼如下
/** * 判斷網(wǎng)絡(luò)是否正常 * @return */ public static boolean isConnect(String ipPath){ //定義其返回的狀態(tài),默認(rèn)為false,網(wǎng)絡(luò)不正常 boolean connect = false; /** * 用Runtime.getRuntime().exec()來調(diào)用系統(tǒng)外部的某個(gè)程序, * 他會(huì)生成一個(gè)新的進(jìn)程去運(yùn)行調(diào)用的程序。 * 此方法返回一個(gè)java.lang.Process對(duì)象, * 該對(duì)象可以得到之前開啟的進(jìn)程的運(yùn)行結(jié)果, * 還可以操作進(jìn)程的輸入輸出流。 */ 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)絡(luò)暢通 connect = true;} else { // 網(wǎng)絡(luò)不暢通 connect = false;} } } catch (IOException e) { e.printStackTrace(); } return connect; }
TTL:生存時(shí)間
指定數(shù)據(jù)報(bào)被路由器丟棄之前允許通過的網(wǎng)段數(shù)量。
TTL 是由發(fā)送主機(jī)設(shè)置的,以防止數(shù)據(jù)包不斷在 IP 互聯(lián)網(wǎng)絡(luò)上永不終止地循環(huán)。轉(zhuǎn)發(fā) IP 數(shù)據(jù)包時(shí),要求路由器至少將 TTL 減小 1。
使用PING時(shí)涉及到的 ICMP 報(bào)文類型
一個(gè)為ICMP請(qǐng)求回顯(ICMP Echo Request)
一個(gè)為ICMP回顯應(yīng)答(ICMP Echo Reply)
TTL 字段值可以幫助我們識(shí)別操作系統(tǒng)類型
測(cè)試
public static void main(String[] args) { System.out.println(HttpUtil.isConnect('220.181.111.188')); }
控制臺(tái)顯示
返回值為:正在 Ping 220.181.111.188具有 32 字節(jié)的數(shù)據(jù):來自 220.181.111.188 的回復(fù): 字節(jié)=32 時(shí)間=23ms TTL=53來自 220.181.111.188 的回復(fù): 字節(jié)=32 時(shí)間=23ms TTL=53來自 220.181.111.188 的回復(fù): 字節(jié)=32 時(shí)間=24ms TTL=53來自 220.181.111.188 的回復(fù): 字節(jié)=32 時(shí)間=23ms TTL=53220.181.111.188 的 Ping 統(tǒng)計(jì)信息: 數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),往返行程的估計(jì)時(shí)間(以毫秒為單位): 最短 = 23ms,最長(zhǎng) = 24ms,平均 = 23ms
true
Process finished with exit code 0
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. js實(shí)現(xiàn)貪吃蛇小游戲(加墻)2. JVM之class文件結(jié)構(gòu)3. js實(shí)現(xiàn)跳一跳小游戲4. asp.net core 認(rèn)證和授權(quán)實(shí)例詳解5. Ajax報(bào)錯(cuò)400的參考解決辦法6. Python中Anaconda3 安裝gdal庫的方法7. 詳解IE6中的position:fixed問題與隨滾動(dòng)條滾動(dòng)的效果8. CSS linear-gradient屬性案例詳解9. Python selenium模擬網(wǎng)頁點(diǎn)擊爬蟲交管12123違章數(shù)據(jù)10. JSP實(shí)現(xiàn)百萬富翁猜數(shù)字游戲
