私のアプリケーションは、コードの実行速度を高めるために、一度に多くのIPアドレスにpingする必要があります。たとえば、1秒後にタイムアウトする300個のIPアドレスにpingを実行すると、5分かかることになります。一方、20個を一度に実行すると、約15秒かかります。ping.exeを使用せずにWindows上のJavaを使用して一度に複数のpingを送信するにはどうすればよいですか?
私はこのためにWindows ping.exeを呼び出そうとしましたが、2つの別々の問題がありました。 1つの問題は、一部のWindowsマシンでは、スレッドを強制終了して終了するまで、何も理由がないためにpingが数分間停止するということです。もう1つの問題は、ping.exeが完全に休止してからping.exeの呼び出しが永遠に続くため、数百のping.exeプロセスがマシンがクラッシュするまで積み重なり始め、コマンドからping.exeを手動で実行することですこの場合、もう1つのpingプロセスが永遠に停止します。
icmp4jというライブラリを使用しようとしましたが、そのライブラリではWindows上で一度に1つのpingしか実行できません。
私はこれを試しましたperson's codeと私のローカルネットワーク上の問題に実行を終了しました。存在しなかった(サブネット上に存在しない)ローカルアドレスにpingを実行すると、明らかにそのアドレスに到達できないという返信を得ることができます。それらの回答の正確に50%で、私はタイムアウトを得て、残りの50%で私は「おしゃべりできません」。
icmp4jやping.exeを使わずに、同時に多数のpingを実行する方法を知っている人はいますか?
[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 pingを実行する必要があるため、動作しません。ソケット接続。 – Jdban101