La clase InetAddress es la clase Java que nos permite obtener el nombre de un host y su IP. Esta clase no tiene un constructor, sino que para incializarla deberemos de pasarle el nombre o la IP de un host en concreto o bien indicarle que la maquina de la cual queremos obtener los parametros es la maquina local. Para esto último utilizaremos el método getLocalHost().
InetAddress address = InetAddress.getLocalHost();
Una vez inicializada InetAdress pasaremos a obtener el nombre e IP del servidor local. Para ello nos valdremos de las siguientes funciones:
1. String getHostName(), que nos devolverá una cadena con el nombre de la dirección InetAddress seleccionada. En nuestro caso nos devolverá el nombre de la maquina local.
String sHostName;
sHostName = address.getHostName();
2. byte[] getAddress(), para obtener la IP del servidor. El método devolverá un array de bytes de 4 posiciones, cada una de las cuales equivale a un campo del número IP (A.B.C.D). Los números vienen en formato binario con signo a si que tendremos que «descifrarlo».
// Cogemos la IP
byte[] bIPAddress = address.getAddress();
// IP en formato String
String sIPAddress = "";
for (int x=0; x 0) {
// A todos los numeros les anteponemos
// un punto menos al primero
sIPAddress += ".";
}
// Jugamos con los bytes y cambiamos el bit del signo
sIPAddress += bIPAddress[x] & 255;
}
Este proceso se explica en detalle en el artículo Obtener la IP de un Host.