为了开发设备监控系统,我使用 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会比isReachablecall 更好和可靠吗?