我已经实现了一种使用以下代码在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。
答案 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实现,例如tcptraceroute
或layer four traceroute
。
来源:traceroute