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