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 Java, Avoid Using InetAddress, Request Time failed, Java Code for Ip等
我的觀點是,我必須檢查用戶是從本地服務器還是從外部訪問我的應用程序。我在本地提到了所有服務的Ip,所以如果用戶從內部訪問它應該可以訪問,並且應該返回true,但是它返回false ...我希望我現在更清楚我的觀點 – 2013-04-06 10:10:01
@Jeef Curiouser和curiouser 。 Pinging不能建立任何類型的東西。你不需要通過ping來確定。您可以從套接字,HTTP標頭,RemoteServer.getClientHost()等獲取遠程地址。這聽起來像是一個XY問題。我建議你重新開始並陳述你的*真實*問題。 – EJP 2013-04-07 01:10:47