0

我正在尝试获取 ping 主机的无法访问状态,因为我分别获得了 up 和 down 的 (0,1) 值,我将如何获得任何条件“2”来告诉我无法访问 ping 主机?

我的代码,

import java.net.InetAddress;

public class PingExample 
{
public static void main(String[] args)
{
try
{
InetAddress address = InetAddress.getByName("172.16.2.0");
// Try to reach the specified address within the timeout
// periode. If during this periode the address cannot be
// reach then the method returns false.
boolean reachable = address.isReachable(10000);
System.out.println("Is host reachable? " + reachable);
} catch (Exception e)
{
e.printStackTrace();
}
}
}

什么是主动和被动状态?我怎样才能检查它?


编辑:请参阅此链接第 26 页 http://nagios.sourceforge.net/docs/ndoutils/NDOUtils_DB_Model.pdf

stat 列说明。我想得到这个结果,因为我已经发布了我的代码,那么我将如何获得该列“状态”?请记住,我正在为“n”个主机使用循环。

4

1 回答 1

2

“Up”表示主机被 ping “down”表示尝试 ping 但失败,因为 sys 已关闭,“unreachable”表示它尝试 ping 但连接未完成,因此它会告诉被 ping 的主机是“up”或“down” “!

从技术角度来看,这没有任何意义,我怀疑这意味着您尝试做的事情也没有任何意义。

作为记录:

  • Ping 不涉及建立连接。这是一个简单的请求和响应。发生的情况是发送了 ICMP Echo Request 数据包,您等待几秒钟以查看是否收到 ICMP Echo Reply 数据包。

  • 如果数据包无法路由,您可能还会收到 ICMP Network Unreachable 或 ICMP Host Unreachable ...。

  • 你也可能得到……什么都没有。您无法可靠地区分“系统已损坏/关闭”、“数据包被网络丢失”、“数据包被过滤掉”和“系统不存在”。这些都给你......在某些情况下没有回复。

  • 如今,对 ping 的响应(或不响应)通常是由于防火墙阻止了不需要的流量等。

那么这一切意味着不可能可靠地区分“关闭”和“无法到达”......即使您可以为具有技术意义的区别提供解释。

而且我们还没有讨论这些信息中有多少会返回到 Java 应用程序。

于 2012-01-10T12:37:46.500 回答