Obtener información de la dirección del host
En Java, utilizamos la clase InetAddress para representar la dirección de red de destino, incluido el nombre de host y la información numérica de la dirección, y las instancias de InetAddress son inmutables y cada instancia siempre apunta a una dirección. La clase InetAddress contiene dos subclases, correspondientes a dos versiones de direcciones IP:
Copie el código de código de la siguiente manera:
Dirección Inet4
Dirección Inet6
Podemos saberlo por las notas anteriores: las direcciones IP en realidad se asignan a la conexión entre el host y la red, en lugar del host en sí. La clase NetworkInterface proporciona la función de acceder a información en todas las interfaces del host. A continuación utilizamos un programa de ejemplo simple para aprender cómo obtener la información de la dirección de un host de red:
Copie el código de código de la siguiente manera:
importarjava.net.*;
importjava.util.Enumeración;
clase públicaInetAddressExample{
publicstaticvoidmain(String[]argumentos){
//TODOmétodostub generado automáticamente
intentar{
//Obtener la lista de interfaces de red del host
Enumeración<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
// Compruebe si la lista de interfaces está vacía Incluso si el host no tiene otras conexiones de red, la interfaz loopback debería existir.
si(listainterfaz==null){
System.out.println("--No se encontró ninguna interfaz--");
}demás{
while(interfazList.hasMoreElements()){
//Obtiene e imprime la dirección de cada interfaz
NetworkInterfaceiface=interfaceList.nextElement();
//Imprimir nombre de la interfaz
System.out.println("Interfaz"+iface.getName()+";");
//Obtener la dirección asociada con la interfaz
Enumeración<InetAddress>addressList=iface
.getInetAddresses();
//Si está vacío
if(!addressList.hasMoreElements()){
System.out.println("/t(No hay ninguna dirección relacionada con esta interfaz)");
}
//Iteración de la lista, imprime cada dirección
while(listaDeDirección.tieneMásElementos()){
InetAddressaddress=addressList.nextElement();
salida del sistema
.print("/tDirección"
+((instancia de dirección de Inet4Address?"(v4)"
:instancia de dirección de Inet6 ¿Dirección? "v6"
:"(?)")));
System.out.println(":"+dirección.getHostAddress());
}
}
}
}catch(SocketException){
System.out.println("Obtener error de interfaz de red:"+se.getMessage());
}
//Obtiene el nombre de host y la dirección correspondiente a cada parámetro ingresado desde la línea de comando, itera la lista e imprime
para(Stringhost:args){
intentar{
System.out.println(host+":");
InetAddress[]addressList=InetAddress.getAllByName(host);
for(InetAddressaddress:addressList){
System.out.println("/t"+dirección.getHostName()+"/"
+dirección.getHostAddress());
}
}catch(UnknownHostExceptione){
System.out.println("/tNo se puede encontrar la dirección:"+host);
}
}
}
}