Class NetUtils

java.lang.Object
com.sun.enterprise.util.net.NetUtils

public class NetUtils extends Object
  • Field Details

  • Method Details

    • isThisHostLocal

      public static boolean isThisHostLocal(String hostname)
      Return true if hostname represents the current machine. A null or empty hostname is considered local, as is the name "localhost". Otherwise, all the IP addresses corresponding to hostname are compared with all the IP addresses corresponding to "localhost", as well as all the IP addresses for all the network interfaces on this machine. Note that hostname can also be an IP address in string form.
      Returns:
      true if hostname is the local host
    • isEqual

      public static boolean isEqual(String host1, String host2)
      Painfully thorough error-handling. Some would say over-engineered but I plan on never looking at this code again!
      Parameters:
      host1 -
      host2 -
      Returns:
    • getClientSocket

      public static Socket getClientSocket(String host, int port, int msecTimeout)
    • getHostName

      public static String getHostName()
    • getCanonicalHostName

      public static String getCanonicalHostName() throws UnknownHostException
      This method returns the fully qualified name of the host. If the name can't be resolved (on windows if there isn't a domain specified), just host name is returned
      Throws:
      UnknownHostException - so it can be handled on a case by case basis
    • getHostAddresses

      public static InetAddress[] getHostAddresses()
    • getHostIPs

      public static String[] getHostIPs()
    • trimIP

      public static String trimIP(String ip)
    • ip2bytes

      public static byte[] ip2bytes(String ip)
    • isLocalHost

      public static boolean isLocalHost(String ip)
    • isLocal

      public static boolean isLocal(String ip)
    • isRemote

      public static boolean isRemote(String ip)
    • getNextFreePort

      public static int getNextFreePort(String hostName, int port)
      Get the next free port (incrementing by 1)
      Parameters:
      hostName - The host name on which the port is to be obtained
      port - The port number
      Returns:
      The next incremental port number or 0 if a port cannot be found.
    • getFreePort

      public static int getFreePort(String hostName, int startingPort, int endingPort)
      Returns a random port in the specified range
      Parameters:
      hostName - The host on which the port is to be obtained.
      startingPort - starting port in the range
      endingPort - ending port in the range
      Returns:
      the new port or 0 if the range is invalid.
    • isPortValid

      public static boolean isPortValid(int portNumber)
    • isPortStringValid

      public static boolean isPortStringValid(String portNumber)
    • isPortFree

      public static boolean isPortFree(String hostName, int portNumber)
    • checkPort

      public static NetUtils.PortAvailability checkPort(int portNumber)
      There are 4 possibilities when you want to setup a server socket on a port: 1. The port is already in use 2. The user does not have permission to open up shop on that port An example of (2) is a non-root user on UNIX trying to use port 80 3. The port number is not in the legal range 4. OK -- you can use it!
      Parameters:
      portNumber -
      Returns:
      one of the 4 possibilities for this port
    • isPortFree

      public static boolean isPortFree(int portNumber)
    • getFreePort

      public static int getFreePort()
      Gets a free port at the time of call to this method. The logic leverages the built in java.net.ServerSocket implementation which binds a server socket to a free port when instantiated with a port 0 .

      Note that this method guarantees the availability of the port only at the time of call. The method does not bind to this port.

      Checking for free port can fail for several reasons which may indicate potential problems with the system. This method acknowledges the fact and following is the general contract:

    • Best effort is made to find a port which can be bound to. All the exceptional conditions in the due course are considered SEVERE.
    • If any exceptional condition is experienced, 0 is returned, indicating that the method failed for some reasons and the callers should take the corrective action. (The method need not always throw an exception for this).
    • Method is synchronized on this class.
    • Returns:
      integer depicting the free port number available at this time 0 otherwise.
    • isSecurePort

      public static boolean isSecurePort(String hostname, int port) throws IOException, ConnectException, SocketTimeoutException
      This method accepts a hostname and port #. It uses this information to attempt to connect to the port, send a test query, analyze the result to determine if the port is secure or unsecure (currently only http / https is supported).
      Parameters:
      hostname - - String name of the host where the connections has to be made
      port - - int name of the port where the connections has to be made
      Returns:
      admin password
      Throws:
      IOException - if an error occurs during the connection
      ConnectException - if an error occurred while attempting to connect a socket to a remote address and port.
      SocketTimeoutException - if timeout(4s) expires before connecting
    • isRunning

      public static boolean isRunning(String host, int port, int timeoutMilliseconds)
      There is sometimes a need for subclasses to know if a local domain is running. An example of such a command is change-master-password command. The stop-domain command also needs to know if a domain is running without having to provide user name and password on command line (this is the case when I own a domain that has non-default admin user and password) and want to stop it without providing it.

      In such cases, we need to know if the domain is running and this method provides a way to do that.

      Parameters:
      the - timeout in milliseconds
      Returns:
      boolean indicating whether the server is running
    • isRunning

      public static boolean isRunning(String host, int port)
    • isRunning

      public static final boolean isRunning(int port)
      convenience method for the local machine
    • main

      public static void main(String[] args)