【发布时间】:2011-02-28 19:22:58
【问题描述】:
我已经使用以下代码在 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...
这很好用,我可以用输出计算以毫秒为单位的 RTT(延迟)。 但是,如果主机阻止了 ICMP,则 ping 将超时。 (即使在 Mac OS X 终端或 Windows CMD 中。)
现在我想找到一种替代方法来获取 IP 地址的 RTT/延迟。 (我不想在主机端安装软件。) 如果您不能提供 Java 示例,请给我其他输入。我可以在多种语言之间进行翻译,而且我真的可以使用 Google。
【问题讨论】:
-
InetAddress.isReachable(您可能需要在 linux 中为 icmp 提供 root 权限,但它在 tcp 上有回退)。不过,最好的办法是打开一个普通的 TCP 套接字。 -
我已经尝试过 isReachable,但失败得很惨。比ping还差。我也认为打开一个套接字是解决方案,但是我需要一个特定的端口来连接。
标签: java delay ping host roundtrip