Při programování někdy můžeme potřebovat zjistit, která síťová rozhraní na daném počítači zrovna běží, jestli jsou aktivní, potřebujeme zjistit jejich IP adresy a tak podobně. Tím vším se v tomto článku zabývat nebudeme, ale ukážeme si, jak je snadné v konzoli vypsat všechny síťová rozraní.
K zjištění síťových rozhraní použijeme třídu NetworkInterface a její metodu getNetworkInterfasec(). Tato metoda je statická a vrací objekt typu Enumeration, což je objekt, který implementuje rozhraní Enumeration a vytváří řadu prvků - jeden po druhém.
Na objekt třídy Enumeration budeme poté aplikovat metodu nextElement(), která vždy bude vracet další prvek.
Než budeme moci tyto třídy používat, budeme si je muset importovat.
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
Takto už by mohl vypadat program, který by nám rozhraní vypsal. V objektu je mimo jména rozraní také přiřazena IP adresa.
Ukázkový kód:
public static void main(String[] args) throws SocketException {
String rozhrani;
Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements()) {
rozhrani = e.nextElement().toString();
System.out.println(rozhrani);
}
}
}
Všechny třídy a metody jsem popsal již před chvílí, takže je snad vše jasné. Jen metoda třídy Enumeration hasMoreElements(). Je to metoda typu boolean a vrací true, pokud se v daném objektu nachází ještě nějaký prvek.
Výpis tohoto programu vypadá na mém počítači takto:
name:eth0 (eth0) index: 2 addresses:
/fe80:0:0:0:20f:eaff:fe4a:975d%2;
/192.168.0.168;
name:lo (lo) index: 1 addresses:
/0:0:0:0:0:0:0:1%1;
/127.0.0.1;
První rozhraní eth0 je síťové rozhraní, díky kterému jsem připojen do lokální sítě a do síte internet.
Druhé síťové rohraní lo je loopback - lokální smyčka - jak je vidět i podle IP adresy.
