从Java中的Ping测试结果分析出时间部分(Parse out time portion from

2019-07-20 02:50发布

我设法修改程序,以中国平安等计算机并得到平计数。 我怎么能解析出time = ?ms从平盘点结果,实时?

码:

 public static void main(String[] args) {

    String ip = "192.168.1.1 -n 10";
    String pingResult = "";

    String pingCmd = "ping " + ip;

    try{

        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();
    } catch(Exception e) {
       System.out.println(e);
    }
}

输出:

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文本文件里?

我在寻找线索,谢谢。

Answer 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));
    }
}

其输出从所捕获的图案毫秒值。



Answer 2:

你可以使用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"));


文章来源: Parse out time portion from ping results in Java