Obtenha informações de endereço do host
Em Java, usamos a classe InetAddress para representar o endereço de rede de destino, incluindo nome do host e informações numéricas de endereço, e as instâncias de InetAddress são imutáveis, e cada instância sempre aponta para um endereço. A classe InetAddress contém duas subclasses, correspondendo a duas versões de endereços IP:
Copie o código do código da seguinte forma:
Endereço Inet4
Endereço Inet6
Podemos saber pelas notas anteriores: os endereços IP são, na verdade, atribuídos à conexão entre o host e a rede, e não ao próprio host. A classe NetworkInterface fornece a função de acessar informações em todas as interfaces do host. Abaixo usamos um programa de exemplo simples para aprender como obter as informações de endereço de um host de rede:
Copie o código do código da seguinte forma:
importjava.net.*;
importjava.util.Enumeration;
publicclassInetAddressExample{
publicstaticvoidmain(String[]args){
//TODOMetodo gerado automaticamentestub
tentar{
//Obtém a lista de interfaces de rede do host
Enumeração<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
//Verifica se a lista de interfaces está vazia Mesmo que o host não tenha nenhuma outra conexão de rede, a interface de loopback (loopback) deve existir.
if(interfaceList==nulo){
System.out.println("--Nenhuma interface encontrada--");
}outro{
while(interfaceList.hasMoreElements()){
//Obtém e imprime o endereço de cada interface
NetworkInterfaceiface=interfaceList.nextElement();
//Imprime o nome da interface
System.out.println("Interface"+iface.getName()+";");
//Obtém o endereço associado à interface
Enumeração<InetAddress>addressList=iface
.getInetAddresses();
//Se está vazio
if(!addressList.hasMoreElements()){
System.out.println("/t(Não há endereço relacionado a esta interface)");
}
//Iteração da lista, imprime cada endereço
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
Sistema.out
.print("/tEndereço"
+((addressinstanceofInet4Address?"(v4)"
:addressinstanceofInet6Address?"v6"
:"(?)")));
System.out.println(":"+address.getHostAddress());
}
}
}
}catch(SocketException){
System.out.println("Obter erro de interface de rede:"+se.getMessage());
}
//Obtém o nome do host e o endereço correspondente a cada parâmetro inserido na linha de comando, itera a lista e imprime
for(Stringhost:args){
tentar{
System.out.println(host+":");
InetAddress[]addressList=InetAddress.getAllByName(host);
for(InetAddressendereço:addressList){
System.out.println("/t"+address.getHostName()+"/"
+endereço.getHostAddress());
}
}catch(UnknownHostExceptione){
System.out.println("/tNão foi possível encontrar o endereço:"+host);
}
}
}
}