gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:22:23 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com