我需要对某个ip/机器执行ping操作。代码可以在任何类型的平台(windows,linux,mac)上执行,我需要获得有关损失和往返时间的信息。因此,java的ping的exec不够好,因为我需要将ping响应解析为字符串,这在不同的平台和不同的操作系统语言中是不同的。那么我需要做什么呢?我知道有像JNI这样的东西,但我是java新手,所以我需要一点帮助。这仍然意味着我需要在每个平台上都有本机实现?有什么例子或建议吗?
发布于 2011-06-22 19:25:53
我已经使用JNI来获取ping命令。我已经使用原生(C)实现了ping,然后用JNI包装了它。降级是需要为每个平台编译C dll。
发布于 2011-05-30 22:38:49
由于java不是平台独立的,您可以使用System.getProperty("os.name")询问您使用的是哪种操作系统,并根据它来解析响应或定义命令。
或者,您可以在InetAddress中使用isReachable(int timeout),这似乎是最接近ICMP ECHO请求的实现,但它不会为您提供有关丢失和往返时间的信息。
另一个想法是使用tracert/tracepath而不是ping来获得往返行程?有关更多信息,请查看this thread。
发布于 2011-05-30 22:02:16
你不能用纯Java做真正的ICMP。但是,可移植的jpcap库为本机库提供了一个很好的接口,包括ICMP (ping)。
https://stackoverflow.com/questions/6177223
复制相似问题