Class IsReachable

java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.taskdefs.condition.IsReachable
All Implemented Interfaces:
Cloneable, Condition

public class IsReachable extends ProjectComponent implements Condition

Test for a host being reachable using ICMP "ping" packets & echo operations. Ping packets are very reliable for assessing reachability in a LAN or WAN, but they do not get through any well-configured firewall. Echo (port 7) may.

This condition turns unknown host exceptions into false conditions. This is because on a laptop, DNS is one of the first services lost when the network goes; you are implicitly offline.

If a URL is supplied instead of a host, the hostname is extracted and used in the test--all other parts of the URL are discarded.

The test may not work through firewalls; that is, something may be reachable using a protocol such as HTTP, while the lower level ICMP packets get dropped on the floor. Similarly, a host may be detected as reachable with ICMP, but not reachable on other ports (i.e. port 80), because of firewalls.

Since:
Ant 1.7
  • Field Details

    • DEFAULT_TIMEOUT

      public static final int DEFAULT_TIMEOUT
      The default timeout.
      See Also:
    • ERROR_NO_HOSTNAME

      public static final String ERROR_NO_HOSTNAME
      Error when no hostname is defined
      See Also:
    • ERROR_BAD_TIMEOUT

      public static final String ERROR_BAD_TIMEOUT
      Error when invalid timeout value is defined
      See Also:
    • ERROR_ON_NETWORK

      public static final String ERROR_ON_NETWORK
      Network error message is seen.
      See Also:
    • ERROR_BOTH_TARGETS

      public static final String ERROR_BOTH_TARGETS
      Error message when url and host are specified.
      See Also:
    • MSG_NO_REACHABLE_TEST

      public static final String MSG_NO_REACHABLE_TEST
      Error message when no reachably test avail.
      See Also:
    • ERROR_BAD_URL

      public static final String ERROR_BAD_URL
      Error message when an invalid url is used.
      See Also:
    • ERROR_NO_HOST_IN_URL

      public static final String ERROR_NO_HOST_IN_URL
      Error message when no hostname in url.
      See Also:
    • METHOD_NAME

      @Deprecated public static final String METHOD_NAME
      Deprecated.
      Since 1.10.6
      The method name to look for in InetAddress
      See Also:
  • Constructor Details

    • IsReachable

      public IsReachable()
  • Method Details

    • setHost

      public void setHost(String host)
      Set the host to ping.
      Parameters:
      host - the host to ping.
    • setUrl

      public void setUrl(String url)
      Set the URL from which to extract the hostname.
      Parameters:
      url - a URL object.
    • setTimeout

      public void setTimeout(int timeout)
      Set the timeout for the reachability test in seconds.
      Parameters:
      timeout - the timeout in seconds.
    • eval

      public boolean eval() throws BuildException
      Evaluate the condition.
      Specified by:
      eval in interface Condition
      Returns:
      true if the condition is true.
      Throws:
      BuildException - if an error occurs