2010-03-09 18 views

Respuesta

56

Si usted está buscando para cualquier dirección IP válida para el host local, entonces usted debe comprobar anfitrión local especial (por ejemplo, 127.0.0.1) direcciones, así como las asignadas a las interfaces. Por ejemplo ...

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

Con una cadena, lo que indica el puerto, llamar a esto con:

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

eso se debe InetAddress.getHostName ("IP viene aquí") ... getbyHostName no existe . –

+3

@AbhijeetKashnia: Gracias, pero en realidad debería ser 'InetAddress.getByName()', 'getHostName()' es un método de objeto, no un método de clase y hace algo diferente (obtiene el nombre de host para la dirección IP, tal como usar una búsqueda DNS inversa). –

Cuestiones relacionadas