为了开发设备监控系统,我使用 InetAdressisReachable
方法来了解网络中的设备是否在线。我正在使用ScheduledExecutorService
设备列表同时 pingicmp
设备。
现在,如果要使用 10 个线程池 ping 的设备数量较低(例如 60 个设备)ScheduledExecutorService
,它工作正常。意味着结果将正确显示设备状态。这里isReachable
有 5000 毫秒的时间。如果设备数量增加到 80,isReachable
即使设备在线,某些设备也会显示离线状态。如果我将isReachable
方法超时时间增加到 10000 毫秒,设备状态就有更好的机会获得正确的状态。
从这些设备中,大多数设备都是基于 Linux 的系统,并且isReachable
总是为它们返回正确的状态,但对于 Windows,行为是不可预测的。我想确保网络上的设备始终处于正确状态。还可以通过启动 java 进程来查看在线设备的退出值 0 来替代机制。
例如“ Process proc = new ProcessBuilder("ping", host).start();
”
那么,有哪些专家会给出建议呢?具有上述 a 的设备的检查状态Process
会比isReachable
call 更好和可靠吗?