使用java ping多平台

Sop*_*hie 7 java java-native-interface ping icmp

我需要对某些ip /机器执行ping操作.代码可以在任何类型的平台(windows,linux,mac)上执行,我需要获取有关丢失和往返时间的信息.所以java的ping操作不够好,因为那时我需要将ping响应解析为字符串,这对于每个平台和每个OS语言都是不同的.那我需要做什么?我知道有类似JNI的东西,但我是java的新手,所以需要一些帮助.它仍然意味着我需要每个平台都有本机实现?任何例子或建议?

Clo*_*ble 5

由于java不是独立于平台的,因此您可以询问使用哪个操作系统System.getProperty("os.name")并解析响应或根据它来定义命令.

或者您可以使用isReachable(int timeout)InetAddress这似乎是最接近实现的ICMP ECHO REQUEST,但它不会为您提供有关损失和往返时间的信息.

另一个想法是使用tracert/tracepath而不是ping来进行往返?查看此主题以获取更多信息.


Sop*_*hie 0

我已经使用 JNI 来获取 ping 命令。我使用本机 (C) 实现了 ping,然后用 JNI 包装它。降级是需要为每个平台编译C dll。