java - 我如何解析 Ping 请求(字符串)的 Ping 时间(整数)?

标签 java android parsing process ping

我是 Android 编程的新手,而且我在 Java/Android 编程方面经验不足。我想制作一个应用程序,它会 ping 用户输入的地址。

所以我找到了一个 quit nice 脚本,它对一个地址执行 ICMP Ping 请求并返回命令行的输出。 (实际上它只是在进程中运行的 Ping 命令):

public String ping(String url){
    int count = 0;
    String str = "";
    try {
        Process process = Runtime.getRuntime().exec(
                "/system/bin/ping -c 1 " + url);
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                process.getInputStream()));
        int i;
        char[] buffer = new char[4096];
        StringBuffer output = new StringBuffer();
        while ((i = reader.read(buffer)) > 0)
            output.append(buffer, 0, i);
        reader.close();
        //int time = Integer.parseInt(output[10])
        // body.append(output.toString()+"\n");
        str = output.toString();
        str = str.substring(str.indexOf("time="), str.indexOf("ms"));
        //str = output.toString();
        // Log.d(TAG, str);

    } catch (IOException e) {
        // body.append("Error\n");
        e.printStackTrace();
    }
    return str;
}

输出:

time = 43

但是我真的不明白这里的一切都是做什么的,因为它是来自互联网的脚本。因为我只是对响应的时间感兴趣,所以我想解析它并将其转换为 Integer。

我认为有两种可能

  • 修改 ping 命令只返回时间
  • 从字符串中解析出时间的整数

我从来没有用过那种东西,所以我想问问你们是否可以帮助我。 :)

最佳答案

您可以通过以下几种方式做到这一点:

1

str = str.substring(str.indexOf("=") + 1, str.indexOf("ms")).trim();
int result = Integer.valueOf(str);

2

str = str.replace("time=", "").replace("ms", "").trim();
int result = Integer.valueOf(str);

3

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(output.toString());
matcher.find();
String result = matcher.group();
int result = Integer.valueOf(str);

4

str = str.replaceAll("\\D+","");

关于java - 我如何解析 Ping 请求(字符串)的 Ping 时间(整数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845663/

相关文章:

java - 在nimbus-jose-jwt中,生命周期和刷新时间有什么区别?

javascript - 如何获取两个服务器的cookie 1.运行应用程序(HTTP),2.运行websocket(WS)服务器?

android - SDK 管理器是灰色的

android - 首次启动应用程序时 WebView 无法登录

java - 将 Java 中的 3D 仿射变换构建导入到 R

java - 将@Scoped 与EJB 一起使用有什么意义?

java - 如何在实现 Parcelable 时对 ArrayList 进行排序

parsing - 比较来自不同网络的数据源(联盟营销)

python - 如何用 Python 编写抽象语法树的访问者模式?

parsing - GAE Go template.Execute,传递带有向量的结构