用Java ping到多平台

| 我需要对某些ip /机器执行ping操作。该代码可以在任何类型的平台(Windows,Linux,Mac)上执行,我需要获取有关损失和往返时间的信息。 所以ping的java \ exec不够好,因为然后我需要将ping响应解析为字符串,这对于每种平台和每种OS语言都是不同的。 那我该怎么办?我知道有类似JNI的东西,但是我对Java不熟悉,因此需要一些帮助。 这仍然意味着我需要每个平台都具有本机实现吗? 有什么例子或建议吗?     
已邀请:
        由于java不是独立于平台的,因此您可以使用
System.getProperty(\"os.name\")
询问使用哪个操作系统,并解析响应或根据响应定义命令。 另外,您可以在
InetAddress
中使用
isReachable(int timeout)
,这似乎是最接近ICMP ECHO REQUEST的实现,但是它不会为您提供有关丢失和往返时间的信息。 另一个想法是使用tracert / tracepath而不是ping来回往返?检查此线程以获取更多信息。     
        您不能使用纯Java进行真正的ICMP。合理可移植的jpcap库为本地库提供了一个不错的Java接口,包括ICMP(ping)。     
        我想解析仍然是您最简单的选择。如果您需要的不仅仅是此正则表达式,我将感到惊讶:
time[<=]([0-9.]+)[ ]?ms
用括号括起来,您会得到如
1
14
1.239
这样的时间,可以馈入
Float.parseFloat()
。     
        我已经使用JNI来获取ping命令。 我已经使用本机(C)实现了ping,然后用JNI包装了它。 降级是需要在每个平台上编译C dll。     

要回复问题请先登录注册