如何检查IP地址是否是多宿主系统上的本地主机?

时间:2010-03-09 02:52:26

标签: java

对于具有多个NIC卡的计算机,Java中是否有方便的方法来告知给定的IP地址是否是当前计算机。 e.g。

boolean IsThisMyIpAddress("192.168.220.25");

1 个答案:

答案 0 :(得分:64)

如果要查找对本地主机有效的任何IP地址,则必须检查特殊的本地主机(例如127.0.0.1)地址以及分配给任何接口的地址。例如......

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;
    }
}

使用表示端口的字符串,使用以下命令调用:

boolean isMyDesiredIp = false;
try
{
    isMyDesiredIp = isThisMyIpAddress(InetAddress.getByName("192.168.220.25")); //"localhost" for localhost
}
catch(UnknownHostException unknownHost)
{
    unknownHost.printStackTrace();
}