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

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Каков Сетевой интерфейс?
Следующая страница: Перечисление Адресов Сетевого интерфейса