Получить информацию об адресе хоста
В Java мы используем класс InetAddress для представления адреса целевой сети, включая имя хоста и числовую информацию об адресе, а экземпляры InetAddress являются неизменяемыми, и каждый экземпляр всегда указывает на адрес. Класс InetAddress содержит два подкласса, соответствующие двум версиям IP-адреса:
Скопируйте код кода следующим образом:
Инет4Адрес
Инет6Адрес
Из предыдущих заметок мы можем знать: IP-адреса фактически назначаются соединению между хостом и сетью, а не самому хосту. Класс NetworkInterface предоставляет функцию доступа к информации на всех интерфейсах хоста. Ниже мы используем простой пример программы, чтобы узнать, как получить информацию об адресе сетевого хоста:
Скопируйте код кода следующим образом:
importjava.net.*;
importjava.util.Enumeration;
publicclassInetAddressExample {
publicstaticvoidmain(String[]args){
//TODOАвтоматически сгенерированная заглушка метода
пытаться{
//Получаем список сетевых интерфейсов хоста
Enumeration<NetworkInterface>interfaceList=NetworkInterface
.getNetworkInterfaces();
//Проверяем, пуст ли список интерфейсов. Даже если у хоста нет других сетевых подключений, интерфейс обратной связи (loopback) должен существовать.
если (interfaceList == null) {
System.out.println("-Интерфейс не найден--");
}еще{
while(interfaceList.hasMoreElements()){
//Получить и распечатать адрес каждого интерфейса
NetworkInterfaceiface=interfaceList.nextElement();
//Распечатываем имя интерфейса
System.out.println("Интерфейс"+iface.getName()+";");
//Получаем адрес, связанный с интерфейсом
Перечисление<InetAddress>addressList=iface
.getInetAddresses();
//пусто ли оно
if(!addressList.hasMoreElements()){
System.out.println("/t(Нет адреса, связанного с этим интерфейсом)");
}
//Итерация списка, распечатка каждого адреса
while(addressList.hasMoreElements()){
InetAddressaddress=addressList.nextElement();
Система.out
.print("/tАдрес"
+((адресэкземпляраInet4Address?"(v4)"
:addressinstanceofInet6Address?"v6"
:"(?)")));
System.out.println(":"+address.getHostAddress());
}
}
}
}catch(SocketException){
System.out.println("Получить ошибку сетевого интерфейса:"+se.getMessage());
}
//Получаем имя и адрес хоста, соответствующие каждому параметру, введенному из командной строки, перебираем список и печатаем
for(Stringhost:args){
пытаться{
System.out.println(хост+":");
InetAddress[]addressList=InetAddress.getAllByName(хост);
for(InetAddressaddress:addressList){
System.out.println("/t"+address.getHostName()+"/"
+address.getHostAddress());
}
}catch(UnknownHostExceptione){
System.out.println("/tНевозможно найти адрес:"+host);
}
}
}
}