java中判斷網絡是否連通


  前段時間在項目中做了一個發送短信的功能,直到項目上線后,才發現了自己菜鳥的本質——考慮問題的不周全。發送短信,在我們的系統中會自動生成短信內容並且構造好聯系人、電話等一條字段,插入到另外一個地方的數據庫,由他們連接運營商發送短信至用戶。但使用中有一段時間,我這邊的系統顯示短信生成正常,而用戶卻沒有收到短信,在百分百確定代碼沒有問題后,咨詢了一個老鳥,才知道,發短信前是需要判斷一下那邊的IP是否能ping通的,如果ping不同,你這邊的短信插不過去,系統就會一直等待,造成延遲。

  從老鳥那請教了一下,原來只需要加幾行代碼,就能完成這個工作,豁然開朗之際,把我的喜悅分享給大家。

  使用中發現,如果需要判斷系統連接一個url是否正常,試用URL中的openStream()方法是非常便捷的。

 1 package com.cjj.client;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.net.InetAddress;
 6 import java.net.URL;
 7 
 8 public class InetJavaTest {
 9     private static String remoteInetAddr = "59.231.36.59";//需要連接的IP地址
10      /**
11      * 傳入需要連接的IP,返回是否連接成功
12      * @param remoteInetAddr
13      * @return
14      */
15     public static boolean isReachable(String remoteInetAddr) {
16         boolean reachable = false; 
17         try {   
18             InetAddress address = InetAddress.getByName(remoteInetAddr); 
19             reachable = address.isReachable(5000);  
20             } catch (Exception e) {  
21             e.printStackTrace();  
22             }  
23         return reachable;
24     }
25     
26     public static void main(String[] args) {
27         URL url = null;
28         Boolean bon = false;
29         try {
30         url = new URL("http://baicu.com/");
31         InputStream in = url.openStream();//打開到此 URL 的連接並返回一個用於從該連接讀入的 InputStream
32         System.out.println("連接正常");
33         in.close();//關閉此輸入流並釋放與該流關聯的所有系統資源。
34         } catch (IOException e) {
35         System.out.println("無法連接到:" + url.toString());
36         }
37         bon = isReachable(remoteInetAddr);
38         System.out.println("pingIP:" + bon);
39     }
40 }

 


免責聲明!

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



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