在Java中解析ping结果的超时部分

在Java中解析ping结果的超时部分,java,ping,bufferedreader,runtime.exec,Java,Ping,Bufferedreader,Runtime.exec,我设法修改了一个程序以ping对等计算机并获得ping计数。如何从ping计数结果中实时解析出time=?ms 代码: 输出: Reply from 192.168.1.1: bytes=32 time=2ms TTL=64 Reply from 192.168.1.1: bytes=32 time=4ms TTL=64 Reply from 192.168.1.1: bytes=32 time=2ms TTL=64 Reply from 192.168.1.1: bytes=32 time=2

我设法修改了一个程序以ping对等计算机并获得ping计数。如何从ping计数结果中实时解析出
time=?ms

代码:

输出:

Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=4ms TTL=64
Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=20ms TTL=64
Reply from 192.168.1.1: bytes=32 time=9ms TTL=64
Reply from 192.168.1.1: bytes=32 time=3ms TTL=64
Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=2ms TTL=64
Reply from 192.168.1.1: bytes=32 time=3ms TTL=64

Ping statistics for 192.168.1.1:
    Packets: Sent = 10, Received = 10, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 2ms, Maximum = 20ms, Average = 4ms
我是否需要声明一个变量并使用BufferedReader将“time=?ms”写入文本文件


我正在寻求提示,谢谢。

您可以使用
索引of

pingResult = pingResult.substring(pingResult.indexOf("time="));
然后卸下
TTL

pingResult = pingResult.substring(0, pingResult.indexOf("TTL"));
因此,最终代码:

Runtime r = Runtime.getRuntime();
Process p = r.exec(pingCmd);

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
    System.out.println(inputLine);
    pingResult += inputLine;
}
in.close();
pingResult = pingResult.substring(pingResult.indexOf("time=")).substring(0, pingResult.indexOf("TTL"));

您可以使用
indexOf

pingResult = pingResult.substring(pingResult.indexOf("time="));
然后卸下
TTL

pingResult = pingResult.substring(0, pingResult.indexOf("TTL"));
因此,最终代码:

Runtime r = Runtime.getRuntime();
Process p = r.exec(pingCmd);

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
    System.out.println(inputLine);
    pingResult += inputLine;
}
in.close();
pingResult = pingResult.substring(pingResult.indexOf("time=")).substring(0, pingResult.indexOf("TTL"));
试试这个:

Pattern pattern = Pattern.compile("time=(\\d+)ms");
Matcher m = null;
while ((inputLine = in.readLine()) != null) {
    m = pattern.matcher(inputLine);
    if (m.find()) {
        System.out.println(m.group(1));
    }
}
从捕获的图案中输出毫秒值。

尝试以下操作:

Pattern pattern = Pattern.compile("time=(\\d+)ms");
Matcher m = null;
while ((inputLine = in.readLine()) != null) {
    m = pattern.matcher(inputLine);
    if (m.find()) {
        System.out.println(m.group(1));
    }
}

它从捕获的图案中输出毫秒值。

它可以工作,很多。。。现在我将根据rtt/次调整JMF编码器,非常感谢…它工作正常,非常感谢。。。现在我将根据rtt/次调整JMF编码器,非常感谢…它工作,非常感谢…但是,输出对我来说有点难以继续我的工作…thks用于共享和您的教学,非常感谢…它工作,非常感谢…但是,输出对我来说有点难以继续我的工作…thks用于共享和您的教学,真的。。。