|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Одно из самых полезных сведений, которые можно получить от сетевого интерфейса, является списком IP-адресов, которые присваиваются этому. Можно получить эту информацию из a NetworkInterface экземпляр при использовании одного из двух методов. Первый метод, getInetAddresses(), возвраты Enumeration из InetAddress. Другой метод, getInterfaceAddresses(), возвращает список java.net.InterfaceAddress экземпляры. Этот метод используется, когда Вы нуждаетесь в большей информации об адресе интерфейса вне его IP-адреса. Например, Вам, возможно, понадобилась бы дополнительная информация о маске подсети и широковещательном адресе, когда адрес является адресом IPv4, и сетевой длиной префикса в случае адреса IPv6.
Следующий пример программы перечисляет все сетевые интерфейсы и их адреса на машине:
import java.io.*;
import java.net.*;
import java.util.*;
import static java.lang.System.out;
public class ListNets {
public static void main(String args[]) throws SocketException {
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets))
displayInterfaceInformation(netint);
}
static void displayInterfaceInformation(NetworkInterface netint) throws SocketException {
out.printf("Display name: %s\n", netint.getDisplayName());
out.printf("Name: %s\n", netint.getName());
Enumeration<InetAddress> inetAddresses = netint.getInetAddresses();
for (InetAddress inetAddress : Collections.list(inetAddresses)) {
out.printf("InetAddress: %s\n", inetAddress);
}
out.printf("\n");
}
}
Следующее является демонстрационным выводом из примера программы:
Display name: TCP Loopback interface Name: lo InetAddress: /127.0.0.1 Display name: Wireless Network Connection Name: eth0 InetAddress: /192.0.2.0