Class Inet


  • public final class Inet
    extends Object
    Utilities relating to Internet protocol (a.k.a. "INET" or "IP") address manipulation.
    • Field Detail

      • INET4_ANY

        public static final Inet4Address INET4_ANY
        The "any" address for IPv4.
      • INET4_LOOPBACK

        public static final Inet4Address INET4_LOOPBACK
        The traditional loopback address for IPv4.
      • INET4_BROADCAST

        public static final Inet4Address INET4_BROADCAST
        The broadcast-all address for IPv4.
      • INET6_ANY

        public static final Inet6Address INET6_ANY
        The "any" address for IPv6.
      • INET6_LOOPBACK

        public static final Inet6Address INET6_LOOPBACK
        The loopback address for IPv6.
    • Method Detail

      • toOptimalString

        public static String toOptimalString​(InetAddress inetAddress)
        Get the optimal string representation of an IP address. For IPv6 addresses, this representation will be more compact that the default.
        Parameters:
        inetAddress - the address (must not be null)
        Returns:
        the string representation (not null)
      • toOptimalString

        public static String toOptimalString​(byte[] addressBytes)
        Get the optimal string representation of the bytes of an IP address.
        Parameters:
        addressBytes - the address bytes (must not be null)
        Returns:
        the string representation (not null)
      • toURLString

        public static String toURLString​(InetAddress inetAddress,
                                         boolean useHostNameIfPresent)
        Get a string representation of the given address which is suitable for use as the host component of a URL.
        Parameters:
        inetAddress - the address (must not be null)
        useHostNameIfPresent - true to preserve the host name string in the address, false to always give an IP address string
        Returns:
        the string representation (not null)
      • toURLString

        public static String toURLString​(byte[] addressBytes)
        Get a string representation of the given address bytes which is suitable for use as the host component of a URL.
        Parameters:
        addressBytes - the address bytes (must not be null)
        Returns:
        the string representation (not null)
      • toInet6Address

        public static Inet6Address toInet6Address​(InetAddress inetAddress)
        Get the IPv6 equivalent of the given address. If the address is IPv4 then it is returned as a compatibility address.
        Parameters:
        inetAddress - the address to convert (must not be null)
        Returns:
        the converted address (not null)
      • getHostNameIfResolved

        public static String getHostNameIfResolved​(InetAddress inetAddress)
        Get the host name of the given address, if it is resolved. Otherwise, return null.
        Parameters:
        inetAddress - the address to check (must not be null)
        Returns:
        the host name, or null if the address has no host name and is unresolved
      • getHostNameIfResolved

        public static String getHostNameIfResolved​(InetSocketAddress socketAddress)
        Get the host name of the given address, if it is resolved. Otherwise, return null.
        Parameters:
        socketAddress - the socket address to check (must not be null)
        Returns:
        the host name, or null if the address has no host name and is unresolved
      • getResolved

        public static InetSocketAddress getResolved​(URI uri,
                                                    int defaultPort,
                                                    Class<? extends InetAddress> addressType)
                                             throws UnknownHostException
        Get a resolved socket address from the given URI.
        Parameters:
        uri - the URI (must not be null)
        defaultPort - the default port to use if none is given (must be in the range 1 ≤ n ≤ 65535
        addressType - the class of the InetAddress to search for (must not be null)
        Returns:
        the socket address, or null if the URI does not have a host component
        Throws:
        UnknownHostException - if address resolution failed
      • getResolved

        public static InetSocketAddress getResolved​(URI uri,
                                                    int defaultPort)
                                             throws UnknownHostException
        Get the resolved socket address from the given URI.
        Parameters:
        uri - the URI (must not be null)
        defaultPort - the default port to use if none is given (must be in the range 1 ≤ n ≤ 65535
        Returns:
        the socket address, or null if the URI does not have a host component
        Throws:
        UnknownHostException - if address resolution failed
      • getResolvedInetAddress

        public static <T extends InetAddress> T getResolvedInetAddress​(URI uri,
                                                                       Class<T> addressType)
                                                                throws UnknownHostException
        Get an Internet address for a URI destination, resolving the host name if necessary.
        Type Parameters:
        T - the type of the InetAddress to search for
        Parameters:
        uri - the destination URI
        Returns:
        the address, or null if no authority is present in the URI
        Throws:
        UnknownHostException - if the URI host was existent but could not be resolved to a valid address
      • getResolvedInetAddress

        public static InetAddress getResolvedInetAddress​(URI uri)
                                                  throws UnknownHostException
        Get an Internet address for a URI destination, resolving the host name if necessary.
        Parameters:
        uri - the destination URI
        Returns:
        the address, or null if no authority is present in the URI
        Throws:
        UnknownHostException - if the URI host was existent but could not be resolved to a valid address
      • getResolved

        public static InetSocketAddress getResolved​(InetSocketAddress address)
                                             throws UnknownHostException
        Get a copy of the given socket address, but with a resolved address component.
        Parameters:
        address - the (possibly unresolved) address (must not be null)
        Returns:
        the resolved address (not null)
        Throws:
        UnknownHostException - if address resolution failed
      • getResolved

        public static InetSocketAddress getResolved​(InetSocketAddress address,
                                                    Class<? extends InetAddress> addressType)
                                             throws UnknownHostException
        Get a copy of the given socket address, but with a resolved address component of the given type.
        Parameters:
        address - the (possibly unresolved) address (must not be null)
        addressType - the class of the InetAddress to search for (must not be null)
        Returns:
        the resolved address (not null)
        Throws:
        UnknownHostException - if address resolution failed, or if no addresses of the given type were found, or if the given address was already resolved but is not of the given address type
      • getAddressByNameAndType

        public static <T extends InetAddress> T getAddressByNameAndType​(String hostName,
                                                                        Class<T> addressType)
                                                                 throws UnknownHostException
        Resolve the given host name, returning the first answer with the given address type.
        Type Parameters:
        T - the type of the InetAddress to search for
        Parameters:
        hostName - the host name to resolve (must not be null)
        addressType - the class of the InetAddress to search for (must not be null)
        Returns:
        the resolved address (not null)
        Throws:
        UnknownHostException - if address resolution failed or if no addresses of the given type were found
      • getAllAddressesByNameAndType

        public static <T extends InetAddress> T[] getAllAddressesByNameAndType​(String hostName,
                                                                               Class<T> addressType)
                                                                        throws UnknownHostException
        Resolve the given host name, returning all answers with the given address type.
        Type Parameters:
        T - the type of the InetAddress to search for
        Parameters:
        hostName - the host name to resolve (must not be null)
        addressType - the class of the InetAddress to search for (must not be null)
        Returns:
        the resolved addresses (not null)
        Throws:
        UnknownHostException - if address resolution failed or if no addresses of the given type were found
      • getInet4Address

        public static Inet4Address getInet4Address​(int s1,
                                                   int s2,
                                                   int s3,
                                                   int s4)
        Get an IPv4 address from four integer segments. Each segment must be between 0 and 255.
        Parameters:
        s1 - the first segment
        s2 - the second segment
        s3 - the third segment
        s4 - the fourth segment
        Returns:
        the address (not null)
      • getInet6Address

        public static Inet6Address getInet6Address​(int s1,
                                                   int s2,
                                                   int s3,
                                                   int s4,
                                                   int s5,
                                                   int s6,
                                                   int s7,
                                                   int s8)
        Get an IPv6 address from eight integer segments. Each segment must be between 0 and 65535 (0xffff).
        Parameters:
        s1 - the first segment
        s2 - the second segment
        s3 - the third segment
        s4 - the fourth segment
        s5 - the fifth segment
        s6 - the sixth segment
        s7 - the seventh segment
        s8 - the eighth segment
        Returns:
        the address (not null)
      • isInet6Address

        public static boolean isInet6Address​(String address)
        Checks whether given String is a valid IPv6 address.
        Parameters:
        address - address textual representation
        Returns:
        true if address is a valid IPv6 address, false otherwise
      • parseInet6Address

        public static Inet6Address parseInet6Address​(String address)
        Parse an IPv6 address into an Inet6Address object.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address, or null if the address is not valid
      • parseInet6Address

        public static Inet6Address parseInet6Address​(String address,
                                                     String hostName)
        Parse an IPv6 address into an Inet6Address object.
        Parameters:
        address - the address to parse (must not be null)
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address, or null if the address is not valid
      • parseInet6AddressOrFail

        public static Inet6Address parseInet6AddressOrFail​(String address)
        Parse an IPv6 address into an Inet6Address object, throwing an exception on failure.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • parseInet6AddressOrFail

        public static Inet6Address parseInet6AddressOrFail​(String address,
                                                           String hostName)
        Parse an IPv6 address into an Inet6Address object.
        Parameters:
        address - the address to parse (must not be null)
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • isInet4Address

        public static boolean isInet4Address​(String address)
        Checks whether given String is a valid IPv4 address.
        Parameters:
        address - address textual representation
        Returns:
        true if address is a valid IPv4 address, false otherwise
      • parseInet4Address

        public static Inet4Address parseInet4Address​(String address)
        Parse an IPv4 address into an Inet4Address object.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address, or null if the address is not valid
      • parseInet4Address

        public static Inet4Address parseInet4Address​(String address,
                                                     String hostName)
        Parse an IPv4 address into an Inet4Address object.
        Parameters:
        address - the address to parse
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address, or null if the address is not valid
      • parseInet4AddressOrFail

        public static Inet4Address parseInet4AddressOrFail​(String address)
        Parse an IPv4 address into an Inet4Address object, throwing an exception on failure.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • parseInet4AddressOrFail

        public static Inet4Address parseInet4AddressOrFail​(String address,
                                                           String hostName)
        Parse an IPv4 address into an Inet4Address object.
        Parameters:
        address - the address to parse (must not be null)
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • parseInetAddress

        public static InetAddress parseInetAddress​(String address)
        Parse an IP address into an InetAddress object.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address, or null if the address is not valid
      • parseInetAddress

        public static InetAddress parseInetAddress​(String address,
                                                   String hostName)
        Parse an IP address into an InetAddress object.
        Parameters:
        address - the address to parse
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address, or null if the address is not valid
      • parseInetAddressOrFail

        public static InetAddress parseInetAddressOrFail​(String address)
        Parse an IP address into an InetAddress object, throwing an exception on failure.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • parseInetAddressOrFail

        public static InetAddress parseInetAddressOrFail​(String address,
                                                         String hostName)
        Parse an IP address into an InetAddress object.
        Parameters:
        address - the address to parse (must not be null)
        hostName - the host name to use in the resultant object, or null to use the string representation of the address
        Returns:
        the parsed address (not null)
        Throws:
        IllegalArgumentException - if the address is not valid
      • parseCidrAddress

        public static CidrAddress parseCidrAddress​(String address)
        Parse a CIDR address into a CidrAddress object.
        Parameters:
        address - the address to parse
        Returns:
        the parsed address, or null if the address is not valid
      • parseInet6AddressToBytes

        public static byte[] parseInet6AddressToBytes​(String address)
        Converts IPv6 address from textual representation to bytes.

        If given string doesn't represent valid IPv6 address, the method returns null.

        Parameters:
        address - address textual representation
        Returns:
        byte array representing the address, or null if the address is not valid
      • parseInet4AddressToBytes

        public static byte[] parseInet4AddressToBytes​(String address)
        Converts IPv4 address from textual representation to bytes.

        If given string doesn't represent valid IPv4 address, the method returns null.

        This only supports decimal notation.

        Parameters:
        address - address textual representation
        Returns:
        byte array representing the address, or null if the address is not valid
      • parseInetAddressToBytes

        public static byte[] parseInetAddressToBytes​(String address)
        Converts an IP address from textual representation to bytes.

        If given string doesn't represent valid IP address, the method returns null.

        Parameters:
        address - address textual representation
        Returns:
        byte array representing the address, or null if the address is not valid
      • getScopeId

        public static int getScopeId​(InetAddress address)
        Get the scope ID of the given address (if it is an IPv6 address).
        Returns:
        the scope ID, or 0 if there is none or the address is an IPv4 address
      • getScopeId

        public static int getScopeId​(String scopeName)
        Attempt to get the scope ID of the given string. If the string is numeric then the number is parsed and returned as-is. If the scope is a string, then a search for the matching network interface will occur.
        Parameters:
        scopeName - the scope number or name as a string (must not be null)
        Returns:
        the scope ID, or 0 if no matching scope could be found
      • getScopeId

        public static int getScopeId​(String scopeName,
                                     InetAddress compareWith)
        Attempt to get the scope ID of the given string. If the string is numeric then the number is parsed and returned as-is. If the scope is a string, then a search for the matching network interface will occur.
        Parameters:
        scopeName - the scope number or name as a string (must not be null)
        compareWith - the address to compare with, to ensure that the wrong local scope is not selected (may be null)
        Returns:
        the scope ID, or 0 if no matching scope could be found
      • getScopeId

        public static int getScopeId​(NetworkInterface networkInterface)
      • getURIFromAddress

        public static URI getURIFromAddress​(String scheme,
                                            InetSocketAddress socketAddress,
                                            int defaultPort)
                                     throws URISyntaxException
        Extract a base URI from the given scheme and socket address. The address is not resolved.
        Parameters:
        scheme - the URI scheme
        socketAddress - the host socket address
        defaultPort - the protocol default port, or -1 if there is none
        Returns:
        the URI instance
        Throws:
        URISyntaxException - if the URI failed to be constructed for some reason
      • getProtocolFamily

        public static ProtocolFamily getProtocolFamily​(InetAddress inetAddress)
        Get the protocol family of the given Internet address.
        Parameters:
        inetAddress - the address (must not be null)
        Returns:
        the protocol family (not null)