Java Local Address Check isLocalAddress(String address)

Here you can find the source of isLocalAddress(String address)

Description

Checks if the specified address is a private or loopback address

License

Open Source License

Parameter

Parameter Description
address address to check

Return

true if the address is a local (site and link) or loopback address, false otherwise

Declaration

public static boolean isLocalAddress(String address) 

Method Source Code


//package com.java2s;
//License from project: Open Source License 

import java.net.InetAddress;
import java.net.UnknownHostException;

public class Main {
    /**/*www .  j a  v  a  2s . c  om*/
     * Checks if the specified address is a private or loopback address
     *
     * @param address address to check
     * @return true if the address is a local (site and link) or loopback address, false otherwise
     */
    public static boolean isLocalAddress(String address) {
        try {
            InetAddress inetAddress = InetAddress.getByName(address);

            // Examples: 127.0.0.1, localhost or [::1]
            return isLoopbackAddress(address)
                    // Example: 10.0.0.0, 172.16.0.0, 192.168.0.0, fec0::/10 (deprecated)
                    // Ref: https://en.wikipedia.org/wiki/IP_address#Private_addresses
                    || inetAddress.isSiteLocalAddress()
                    // Example: 169.254.0.0/16, fe80::/10
                    // Ref: https://en.wikipedia.org/wiki/IP_address#Address_autoconfiguration
                    || inetAddress.isLinkLocalAddress()
                    // non deprecated unique site-local that java doesn't check yet -> fc00::/7
                    || isIPv6UniqueSiteLocal(inetAddress);
        } catch (UnknownHostException e) {
            return false;
        }
    }

    /**
     * Checks if the specified address is a loopback address. This can be one of the following:
     * <ul>
     * <li>127.0.0.1</li>
     * <li>localhost</li>
     * <li>[::1]</li>
     * </ul>
     *
     * @param address address to check
     * @return true if the address is a loopback one
     */
    public static boolean isLoopbackAddress(String address) {
        try {
            InetAddress inetAddress = InetAddress.getByName(address);
            return inetAddress.isLoopbackAddress();
        } catch (UnknownHostException e) {
            return false;
        }
    }

    private static boolean isLoopbackAddress(InetAddress address) {
        return address.isLoopbackAddress();
    }

    private static boolean isIPv6UniqueSiteLocal(InetAddress address) {
        // ref: https://en.wikipedia.org/wiki/Unique_local_address

        // currently undefined but could be used in the near future fc00::/8
        return (address.getAddress()[0] & 0xFF) == 0xFC
                // in use for unique site-local fd00::/8
                || (address.getAddress()[0] & 0xFF) == 0xFD;
    }
}

Related

  1. isLocal(String brokerAddress)
  2. isLocalAddress(final String addr)
  3. isLocalAddress(final String address)
  4. isLocalAddress(String address)
  5. isLocalAddress(String address)
  6. isLocalAddress(String host)
  7. isLocalOrLoopback(String address)