Spec-Zone .ru
спецификации, руководства, описания, API
|
NetworkInterface
У class нет никакого общедоступного конструктора. Поэтому, невозможно просто создать новый экземпляр этого class с new
оператор. Вместо этого следующие статические методы доступны так, чтобы можно было получить детали интерфейса от системы: getByInetAddress()
, getByName()
, и getNetworkInterfaces()
. Первые два метода используются, когда Вы уже знаете IP-адрес или имя определенного интерфейса. Третий метод, getNetworkInterfaces()
возвращает полный список интерфейсов на машине.
Сетевые интерфейсы могут быть иерархически организованы. NetworkInterface
class включает два метода, getParent()
и getSubInterfaces()
, это является подходящим для иерархии сетевого интерфейса. getParent()
метод возвращает родителя NetworkInterface
из интерфейса. Если сетевой интерфейс является подынтерфейсом, getParent()
возвращает ненулевое значение. getSubInterfaces()
метод возвращает все подынтерфейсы сетевого интерфейса.
Следующий пример программы перечисляет имя всех сетевых интерфейсов и подынтерфейсов (если кто-либо существует) на машине.
import java.io.*; import java.net.*; import java.util.*; import static java.lang.System.out; public class ListNIFs { public static void main(String args[]) throws SocketException { Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces(); for (NetworkInterface netIf : Collections.list(nets)) { out.printf("Display name: %s\n", netIf.getDisplayName()); out.printf("Name: %s\n", netIf.getName()); displaySubInterfaces(netIf); out.printf("\n"); } } static void displaySubInterfaces(NetworkInterface netIf) throws SocketException { Enumeration<NetworkInterface> subIfs = netIf.getSubInterfaces(); for (NetworkInterface subIf : Collections.list(subIfs)) { out.printf("\tSub Interface Display name: %s\n", subIf.getDisplayName()); out.printf("\tSub Interface Name: %s\n", subIf.getName()); } } }
Следующее является демонстрационным выводом из примера программы:
Display name: bge0 Name: bge0 Sub Interface Display name: bge0:3 Sub Interface Name: bge0:3 Sub Interface Display name: bge0:2 Sub Interface Name: bge0:2 Sub Interface Display name: bge0:1 Sub Interface Name: bge0:1 Display name: lo0 Name: lo0