2016-10-31 42 views
1

我知道如何檢查某個站點/ IP ADDRESS是否可達。但是我想知道是否可以知道特定站點或IP地址的響應時間或以毫秒(ms)爲單位的ping命令?如何知道ping在毫秒

謝謝!

+0

[在Java平值]的可能的複製(http://stackoverflow.com/questions/12077669/ping-value-in-java) – shmosel

回答

1

Java沒有開箱即用的ICMP。有三件事你可以做:

  1. 依靠CLI並使用它來獲得來自ping命令see here的響應。
  2. 使用套接字計算髮送和接收信息之間的延遲see here
  3. 使用ICMP庫。
2

這是非常可能的:) 只要確保你有正確的權限(你把這個在你的AndroidManifest.xml)

<uses-permission android:name="android.permission.INTERNET" /> 

我的代碼工作絕對很好。

public String ping(String url) { 
     String str = ""; 
     try { 
      java.lang.Process process = Runtime.getRuntime().exec(
       "ping -c 1 " + url); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
                  process.getInputStream())); 
      int i; 
      char[] buffer = new char[4096]; 
      StringBuffer output = new StringBuffer(); 
      String op[] = new String[64]; 
      String delay[] = new String[8]; 
      while ((i = reader.read(buffer)) > 0) 
       output.append(buffer, 0, i); 
      reader.close(); 
      op = output.toString().split("\n"); 
      delay = op[1].split("time="); 

      // body.append(output.toString()+"\n"); 
      str = delay[1]; 
      Log.i("Pinger", "Ping: " + delay[1]); 
     } catch (IOException e) { 
      // body.append("Error\n"); 
      e.printStackTrace(); 
     } 
     return str; 
    } 

上面的代碼很簡單,你可以得到。 要調用代碼...

String str = ping("www.google.com"); 
//Unecessary but it makes it easier 
android.widget.Toast.makeText(this, str, android.widget.Toast.LENGTH_LONG).show();