Java InetAddress.isReachable () timeout

Я пытаюсь выяснить, достижимы ли определенные хосты в моей сети. Мой Java-код выглядит следующим образом:

InetAddress adr = InetAddress.getByName(host);
if(adr.isReachable(3000)){
    System.out.println(host + " is reachable");
}

Это работает довольно хорошо, однако, если я уменьшу тайм-аут до 500 мс, он больше не будет определять доступный хост. Я планирую проверять несколько хостов в цикле, поэтому очень важно иметь небольшой тайм-аут. Если я пропингую хост вручную из командной строки Windows, это займет менее 10 мс.

Так почему же для успешного выполнения метода Java требуется гораздо больший тайм-аут? Есть ли какие-либо альтернативы использованию isReachable () ?

8
задан peterh says reinstate Monica 12 May 2014 в 12:34
поделиться