Мое приложение должно выполнить ping много IP-адресов сразу за скорость выполнения кода. Например, pinging 300 ip-адресов, что тайм-аут через одну секунду займет 5 минут, тогда как если 20 запущено за один раз, это займет около 15 секунд.Как я могу отправить несколько пинов одновременно с помощью Java на Windows без использования ping.exe?
Я попытался вызвать windows ping.exe для этого, но у меня были две отдельные и подобные проблемы. Одна из проблем заключается в том, что на некоторых машинах Windows пинг будет просто зависеть на минутку, по-видимому, без причины, пока я не убью нить, и она умрет. Другая проблема: у нас был ping.exe, который полностью разбился на машины раньше, где любой вызов ping.exe длится вечно, поэтому сотни процессов ping.exe начинают накапливаться до тех пор, пока машина не выйдет из строя, и запустить ping.exe вручную из команды линия в этом случае просто оставит еще один процесс ping вечно.
Я попытался использовать библиотеку под названием icmp4j, но эта библиотека позволяет только один пинг одновременно в Windows.
Я пробовал это person's code и в итоге столкнулся с проблемами в моей локальной сети. При проверке локального адреса, который не существует (в вашей подсети), видимо, вы можете получить ответ, в котором говорится, что адрес недоступен. На ровно 50% этих ответов я получаю тайм-аут, а с другой стороны 50% получаю «неподходящий».
Кто-нибудь знает метод одновременного запуска множества пингов на окнах без использования icmp4j или ping.exe?
Возможный дубликат [код java для ping IP-адреса] (http://stackoverflow.com/questions/11506321/java-code-to-ping-an-ip-address) – Tim
Посмотрите: http: //stackoverflow.com/questions/3584210/preferred-java-way-to-ping-a-http-url-for-availability –
@JohnKane \t Это не сработает, потому что мне действительно нужно выполнить ICMP-пинг, а не соединение сокета. – Jdban101