簡體   English   中英

如何在不使用ping.exe的情況下在Windows上使用Java一次發送多個ping?

[英]How can I send multiple pings at once using Java on Windows without using ping.exe?

我的應用程序需要同時ping許多IP地址以提高代碼執行速度。 例如,ping一個300秒的ip地址,一秒鍾后超時需要5分鍾,而如果一次運行20個,它只需要大約15秒。

我試過為此調用windows ping.exe,但我有兩個獨立的類似問題。 一個問題是,在某些Windows機器上,ping只會掛起幾分鍾似乎沒有理由,直到我殺死線程並且它死了。 另一個問題,我們以前ping機器上的ping.exe完全中斷了,任何ping.exe調用都會持續存在,所以數百個ping.exe進程開始堆積直到機器崩潰,並從命令手動運行ping.exe在這種情況下,只是讓另一個ping進程永遠掛起。

我嘗試使用名為icmp4j的庫,但該庫只允許一次一個ping在Windows上發生。

我嘗試了這個人的代碼 ,最終在本地網絡上遇到了問題。 在ping不存在的本地地址(在您的子網上)時,顯然您可以收到一條說明地址無法訪問的回復。 在這些回復的50%中,我會暫停,而在另外50%的回復中,我會得到“無法解決的”。

有沒有人知道在不使用icmp4j或ping.exe的情況下同時在Windows上運行多個ping的方法?

InetAddress.isReachable()是您需要的簡單工具。

icmp4j應該可以正常工作,因為它只是isReachable的包裝。 也許您不能使用靜態入口點IcmpPingUtil.executePingRequest() ,盡管快速查看代碼看起來並不十分令人擔憂。 如果你查看該方法中的代碼( NativeBridgeJavaNativeBridgeIcmPingRequestIcmpPingResponse應該足夠),那么你應該能夠構建一個IcmpPingResponse你需要的健壯的線程安全類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM