如何在ms中知道ping

时间:2016-10-31 04:04:45

标签: java android

我知道如何检查某个站点/ IP地址是否可访问。但我想知道是否可以知道特定站点或IP地址的响应时间或毫秒(毫秒)的ping?

谢谢!

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

  1. 依靠CLI并使用它来获取ping命令see here的响应。
  2. 使用套接字计算发送和接收信息see here之间的延迟。
  3. 使用ICMP库。