微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我的应用程序需要同时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上发生.

我尝试了这个person’s code,最终在我的本地网络上遇到了问题.在ping不存在的本地地址(在您的子网上)时,显然您可以收到一条说明地址无法访问的回复.在这回复的50%中,我会暂停,而在另外50%的回复中,我会得到“无法解决的”.

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

解决方法

InetAddress.isReachable()是您需要的简单工具.

icmp4j应该可以正常工作,因为它只是isReachable的包装.也许您不能使用静态入口点IcmpPingUtil.executePingRequest(),尽管快速查看代码看起来并不十分令人担忧.如果你查看该方法中的代码(NativeBridge或JavaNativeBridge,IcmPingRequest和IcmpPingResponse应该足够),那么你应该能够构建一个可以满足你需要的健壮的线程安全类.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐