Способ подсчета времени прохождения туда-обратно в Java с IP-адресом, помимо команды ping - PullRequest
0 голосов
/ 28 февраля 2011

Я реализовал способ получить RTT в Java на системах Unix с помощью следующего кода:

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, время пинга истечет.(Даже в Mac OS X Terminal или Windows CMD.)

Теперь я хочу найти альтернативный способ как-нибудь получить RTT / задержку для IP-адреса.(Я не хочу устанавливать программное обеспечение на стороне хоста.) Если вы не можете предоставить мне пример Java, пожалуйста, дайте мне другой ввод.Я могу переводить между многими языками, и я действительно могу использовать Google.

Ответы [ 2 ]

1 голос
/ 28 февраля 2011

Tracert - это сокращение от treaceroute (и это команда windows, которую я последний раз проверял), то есть просто ping пути - он также использует ICMP.

В linux эквивалентная команда tracepath, а в Unix-Как и операционные системы, утилита traceroute по умолчанию использует дейтаграммы протокола пользовательских дейтаграмм (UDP) с номерами портов назначения от 33434 до 33534. Утилита traceroute обычно имеет option для указания использования Вместо этого используется эхо-запрос ICMP (тип 8), используемый утилитой Windows tracert.

Существуют также реализации traceroute, использующие пакеты TCP, такие как tcptraceroute или layer four traceroute.

Источник: traceroute

1 голос
/ 28 февраля 2011

Если хост заблокировал ICMP, он не хочет, чтобы вы это делали. Попробуйте вместо этого использовать tracert?

...