2013-04-06 163 views
2

我想檢查特定的IP是否返回true,當我平安Android編程。我嘗試了使用InetAddress並通過創建過程。但他們都不適合我。我知道這個問題與Java中的ICMP支持有關。這裏是代碼的InetAddress,這個返回false總是在Java中ping IP地址通過使用InetAddress返回false false

 try 
    { 
     Boolean Check=InetAddress.getByName("172.11.2.250").isReachable(1000); 
     System.out.println("Value is " + Check); 
     Thread.sleep(3000); 
    } catch (UnknownHostException e4) 
    { 

     // TODO Auto-generated catch block 
     e4.printStackTrace(); 
    } catch (IOException e4) { 
     // TODO Auto-generated catch block 
     e4.printStackTrace(); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

過程methiod

try { 
     Process p1 = Runtime.getRuntime().exec("ping 74.125.236.98 -t"); 
     p1.waitFor(); 
     if(p1.exitValue() == 0) { 
      Log.d("The value is True", ""); 
    else{ 
      Log.d("The value is False", ""); 
     } 

一些類似的討論是: Return false for Ping in JavaAvoid Using InetAddressRequest Time failedJava Code for Ip

回答

0

「我試圖檢查特定IP當我平安Android編程時返回true「。

爲什麼?

但是他們都沒有爲我工作。

定義'沒有工作'。

這裏是代碼的InetAddress,這個返回false總是

所以地址是不可達。那麼你的問題是什麼?

一般來說,確定任何資源是否可用的最佳方法是嘗試使用它,並在出現實際問題時處理錯誤或異常。像你這樣的技巧現在試圖預測未來。你不能。

+0

我的觀點是,我必須檢查用戶是從本地服務器還是從外部訪問我的應用程序。我在本地提到了所有服務的Ip,所以如果用戶從內部訪問它應該可以訪問,並且應該返回true,但是它返回false ...我希望我現在更清楚我的觀點 – 2013-04-06 10:10:01

+0

@Jeef Curiouser和curiouser 。 Pinging不能建立任何類型的東西。你不需要通過ping來確定。您可以從套接字,HTTP標頭,RemoteServer.getClientHost()等獲取遠程地址。這聽起來像是一個XY問題。我建議你重新開始並陳述你的*真實*問題。 – EJP 2013-04-07 01:10:47