Как проверить, является ли IP-адрес локальным хостом в многодомной системе? - PullRequest
36 голосов
/ 09 марта 2010

Для машины с несколькими NIC-картами есть удобный метод в Java, который сообщает, является ли данный IP-адрес текущим или нет. например,

boolean IsThisMyIpAddress("192.168.220.25");

1 Ответ

64 голосов
/ 09 марта 2010

Если вы ищете какой-либо 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...