How to check if an IP address is the local host on a multi-homed system?

前端 未结 1 860
醉梦人生
醉梦人生 2020-12-18 18:09

For a machine with multiple NIC cards, is there a convenient method in Java that tells whether a given IP address is the current machine or not. e.g.

boolea         


        
相关标签:
1条回答
  • 2020-12-18 19:02

    If you are looking for any IP address that is valid for the local host then you must check for special local host (e.g. 127.0.0.1) addresses as well as the ones assigned to any interfaces. For instance...

    public static boolean isThisMyIpAddress(InetAddress addr) {
        // Check if the address is a valid special local or loop back
        if (addr.isAnyLocalAddress() || addr.isLoopbackAddress())
            return true;
    
        // Check if the address is defined on any interface
        try {
            return NetworkInterface.getByInetAddress(addr) != null;
        } catch (SocketException e) {
            return false;
        }
    }
    

    With a string, indicating the port, call this with:

    boolean isMyDesiredIp = false;
    try
    {
        isMyDesiredIp = isThisMyIpAddress(InetAddress.getByName("192.168.220.25")); //"localhost" for localhost
    }
    catch(UnknownHostException unknownHost)
    {
        unknownHost.printStackTrace();
    }
    
    0 讨论(0)
提交回复
热议问题