在Java中解析ping结果的超时部分
我设法修改了一个程序以ping对等计算机并获得ping计数。如何从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
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用于共享和您的教学,真的。。。