加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 05:31:46 所属栏目:Windows 来源:网络整理
导读:我的应用程序需要同时ping许多IP地址以提高代码执行速度.例如,ping一个300秒的ip地址,一秒钟后超时需要5分钟,而如果一次运行20个,它只需要大约15秒. 我试过为此调用windows ping.exe,但我有两个独立的类似问题.一个问题是,在某些Windows机器上,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应该足够),那么你应该能够构建一个可以满足你需要的健壮的线程安全类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读