gpt4 book ai didi

java - 如何在不使用 ping.exe 的情况下使用 Windows 上的 Java 一次发送多个 ping?

转载 作者:可可西里 更新时间:2023-11-01 14:23:22 25 4
gpt4 key购买 nike

我的应用程序需要一次 ping 多个 IP 地址以提高代码的执行速度。例如,ping 300 个 1 秒后超时的 IP 地址需要 5 分钟,而如果一次运行 20 个,则只需要大约 15 秒。

我曾尝试为此调用 Windows ping.exe,但我遇到了两个独立且相似的问题。一个问题是,在某些 Windows 机器上,ping 会无缘无故地挂起几分钟,直到我终止线程并且它死掉。另一个问题是,我们之前在机器上遇到过 ping.exe 完全中断的情况,任何 ping.exe 调用都会永远持续,因此数百个 ping.exe 进程开始堆积,直到机器崩溃,并从命令手动运行 ping.exe在这种情况下,行只会让另一个 ping 进程永远挂起。

我试过使用一个名为 icmp4j 的库,但该库一次只允许在 Windows 上执行一个 ping 操作。

我试过这个 person's code最后在我的本地网络上遇到了问题。当 ping 一个不存在的本地地址(在您的子网上)时,显然您会得到一个回复​​,说该地址无法访问。对于这些回复中的 50%,我会超时,而在另外 50% 的回复中,我会“无法ping通”。

有谁知道在不使用 icmp4j 或 ping.exe 的情况下同时在 Windows 上运行多个 ping 的方法吗?

最佳答案

InetAddress.isReachable() 是您需要的基本工具。

icmp4j 应该可以很好地完成这项工作,因为它只是 isReachable 的包装器。也许您不能使用静态入口点 IcmpPingUtil.executePingRequest(),但快速查看代码看起来并不十分令人担忧。如果您通过该方法中的代码(NativeBridgeJavaNativeBridgeIcmPingRequestIcmpPingResponse 应该就足够了),那么您应该能够构建一个健壮的线程安全类,它可以满足您的需要。

关于java - 如何在不使用 ping.exe 的情况下使用 Windows 上的 Java 一次发送多个 ping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36317105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com