對於開發設備監控系統,我使用InetAdress isReachable
方法來了解網絡中的設備是否在線。我正在使用ScheduledExecutorService
以及設備列表來ping icmp
設備同時。關於InetAddress「isReachable」方法
現在,如果設備數量很低(比如說60個設備)被ScheduledExecutorService
ping爲10個線程池,那麼它工作正常。平均結果將正確顯示設備狀態。這裏的isReachable
超時5000毫秒。 如果設備數量增加到80,即使設備在線,某些設備也會以isReachable
方法顯示離線狀態。如果我將isReachable
方法的時間增加到10000毫秒,則設備狀態可能有更好的機會正確的狀態。
從這些設備中,大多數設備都是基於Linux的系統,並且isReachable
總是爲它們返回正確的狀態,但對於Windows而言,這種行爲是不可預知的。 我想確保網絡上的設備始終處於正確的狀態。也可以通過啓動一個java進程來查看聯機設備的退出值0。
對於e.g 「Process proc = new ProcessBuilder("ping", host).start();
」
因此,將勸告什麼專家?具有Process
的設備的上述檢查狀態是否會比isReachable
呼叫更好,更可靠?
謝謝Donal,我會確認是否可以從一臺主機同時ping多臺機器。 –