在ping命令旁边用IP地址计算Java中往返时间的方法

时间:2011-02-28 19:22:59

标签: java delay ping host roundtrip

我已经实现了一种使用以下代码在unix系统上使用Java获取RTT的方法:

String command[] = {"ping", "-c4", theIPAddress};
ProcessBuilder pb = new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process p = pb.start();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = in.readLine()) != null)
   //the terminal output with the ping results...
etc...

这很好用,我可以用输出计算ms的RTT(延迟)。 但是,如果主机阻止了ICMP,则ping将超时。 (即使在Mac OS X终端或Windows CMD中也是如此。)

现在我想找到另一种方法来以某种方式获得IP地址的RTT /延迟。 (我不想在主机端安装软件。) 如果你不能给我一个Java例子,请给我其他输入。我可以在多种语言之间进行翻译,我真的可以使用Google。

2 个答案:

答案 0 :(得分:1)

如果主机阻止了ICMP,他不希望你这样做。尝试使用tracert?

答案 1 :(得分:1)

Tracert是treaceroute的缩写(最后我检查的是windows命令),什么是路径ping - 它也使用ICMP。

在Linux上,等效命令为tracepath,在类Unix操作系统上,traceroute实用程序默认使用带有目标端口号的用户数据报协议(UDP)数据报traceroute实用程序通常具有option来指定使用 ICMP echo请求(类型8),而不是Windows tracert实用程序所使用的。

还有使用TCP数据包的traceroute实现,例如tcptraceroutelayer four traceroute

来源:traceroute