Class Inet

java.lang.Object
org.wildfly.common.net.Inet

public final class Inet extends Object
Utilities relating to Internet protocol (a.k.a. "INET" or "IP") address manipulation.
Author:
David M. Lloyd
  • Field Details

    • 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 Details

    • 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
    • findInterfaceWithScopeId

      public static NetworkInterface findInterfaceWithScopeId(String scopeName)
    • getScopeId

      public static int getScopeId(NetworkInterface networkInterface)
    • getScopeId

      public static int getScopeId(NetworkInterface networkInterface, InetAddress compareWith)
    • 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)