Class NetUtils


  • public class NetUtils
    extends Object
    • Method Detail

      • 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()
      • 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.