2015-01-09 190 views
0

以下是我用來ping IPv4地址並記錄實際響應時間(以毫秒爲單位)。 不幸的是,我從來沒有得到有效的答覆..請求總是超時。總是返回0。 請幫忙:)在Java中ping IP地址時的響應超時

private long pingHost(String host, int port) { 
    try {     
     Inet4Address inet4 = (Inet4Address)InetAddress.getByName(host);   
     long start = System.currentTimeMillis(); 
     if(inet4.isReachable(5000)){ 
      long end = System.currentTimeMillis(); 
      long total = end-start; 
      System.out.println(total); 
      return total; 
     } 

    } catch (UnknownHostException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return 0; 

} 
+0

在您的操作系統的shell中嘗試ping。遠程主機上的防火牆可能會阻止該ping。 – Tom 2015-01-09 22:12:21

+0

通過cmd Pinging工程。 – chrisyou 2015-01-09 22:15:25

+0

可能重複[爲什麼InetAddress.isReachable返回false,當我可以ping IP地址?](http://stackoverflow.com/questions/9922543/why-does-inetaddress-isreachable-return-false-when-i -can-ping-the-ip-address) – Todd 2015-01-09 22:17:09

回答

0

用Java創建一個進程並在其中執行ping命令。 isReachable方法是已知的不是的工作。

有關更多詳細信息和代碼示例,請參閱this答案。

0

你有沒有試着用

isReachable(NetworkInterface的用作netif,INT TTL,INT超時) 測試該地址是否可達。

您的生活時間可能很短,因此連接永遠不會到達目的地。

+0

即使有25跳,它也不會成爲現實。 – chrisyou 2015-01-09 22:31:53