如何检查主机是否无法访问?

时间:2012-01-10 05:41:20

标签: java networking ping icmp

我正在尝试获取ping主机的无法访问状态,因为我分别得到上下两个值(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”主机使用循环。

1 个答案:

答案 0 :(得分:2)

  

“向上”表示主机ping“down”意味着尝试ping但失败,因为sys已关闭且“无法访问”意味着它尝试ping但连接未完成,因此它会告诉ping主机是“up”或“向下”!

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

记录:

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

  • 如果无法路由数据包,您可能还会获得无法访问的ICMP网络或无法访问的ICMP主机。

  • 你可能也会......没事。您无法可靠地区分“系统被中断/关闭”,“数据包被网络丢失”,“数据包被过滤掉”和“系统不存在”。这些都给你......在某些情况下没有回复。

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

所以这一切意味着不可能可靠地区分“向下”和“无法到达”......即使你能提供一个技术意义上的区别的解释。

我们还没有谈到这些信息有多少会回到Java应用程序。