Java判斷網絡是否正常


判斷網絡是否正常使用

  •       /**
         * 判斷網絡是否正常
         * @return
         */
        public static boolean isConnect(String ipPath){
            //定義其返回的狀態,默認為false,網絡不正常
            boolean connect = false;
            /**
             * 用Runtime.getRuntime().exec()來調用系統外部的某個程序,
             * 他會生成一個新的進程去運行調用的程序。
             * 此方法返回一個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) {
                        // 網絡暢通
                        connect = true;
                    } else {
                        // 網絡不暢通
                        connect = false;
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return connect;
        }

     

TTL:生存時間
指定數據報被路由器丟棄之前允許通過的網段數量。
TTL 是由發送主機設置的,以防止數據包不斷在 IP 互聯網絡上永不終止地循環。轉發 IP 數據包時,要求路由器至少將 TTL 減小 1。
使用PING時涉及到的 ICMP 報文類型
一個為ICMP請求回顯(ICMP Echo Request)
一個為ICMP回顯應答(ICMP Echo Reply)
TTL 字段值可以幫助我們識別操作系統類型

測試

 
   public static void main(String[] args) {
        System.out.println(HttpUtil.isConnect("220.181.111.188"));

    }

 

控制台顯示

返回值為:正在 Ping 220.181.111.188
具有 32 字節的數據:
來自 220.181.111.188 的回復: 字節=32 時間=23ms TTL=53
來自 220.181.111.188 的回復: 字節=32 時間=23ms TTL=53
來自 220.181.111.188 的回復: 字節=32 時間=24ms TTL=53
來自 220.181.111.188 的回復: 字節=32 時間=23ms 
TTL=53220.181.111.188 的 Ping 統計信息:    
數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):    
最短 = 23ms,最長 = 24ms,平均 = 23ms

true

Process finished with exit code 0

 

 公眾號:摘星族

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM