如何运行PING命令并获取ping主机摘要?

嗨我需要使用Java代码执行PING命令并获取ping主机的摘要。 怎么用Java做?

作为指定的viralpatel,您可以使用Runtime.exec()

以下是它的一个例子

 class pingTest { public static void main(String[] args) { String ip = "127.0.0.1"; 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 (IOException e) { System.out.println(e); } } } 

产量

 Pinging 127.0.0.1 with 32 bytes of data: Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Reply from 127.0.0.1: bytes=32 time<1ms TTL=128 Ping statistics for 127.0.0.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms 

请参阅http://www.velocityreviews.com/forums/t146589-ping-class-java.html

InetAddress类有一个方法,它使用ECMP Echo Request(aka ping)来确定主机可用性。

 String ipAddress = "192.168.1.10"; InetAddress inet = InetAddress.getByName(ipAddress); boolean reachable = inet.isReachable(5000); 

如果上述reachable变量为真,则表示主机已在给定时间内(毫秒)正确回答了ECMP Echo Reply(aka pong)。

注意:并非所有实现都必须使用ping。 文件说明 :

如果可以获得特权,则典型的实现将使用ICMP ECHO REQUEST,否则它将尝试在目标主机的端口7(Echo)上建立TCP连接。

因此,该方法可用于检查主机可用性,但不能普遍用于检查基于ping的检查。

看看我正在制作的这个ping库:

http://code.google.com/p/jpingy/

也许它可以帮助