java.net.NetworkInterface
- Existe depuis Java 1.4
- Organisation sous forme d'arbre d'interfaces
-
Propriétés des interfaces :
- interface de boucle locale (isLooopback())
- interface supportant la multi-diffusion (supportsMulticast())
- interface virtuelle (isVirtual()), e.g. interface de VLAN, de tunnel...
- interface de liaison point à point (isPointToPoint())
Obtenir une interface réseau
Identification d'une interface réseau :
- par un nom d'interface : getName(), e.g. eth0, wlan0, ppp0...
- par des adresses physiques (adresse MAC Ethernet) : getInterfaceAddresses()
- par des adresses logiques (adresse IP) : getInetAddresses()
Méthodes statiques de récupération d'interface :
- par nom d'interface : NetworkInterface.getByName(String)
- par adresse IP : NetworkInterface.getByInetAddress(InetAddress)
Affichage de l'arbre des interfaces réseau
package fr.upem.jacosa.net;
import java.net.*;
import java.io.*;
import java.util.*;
public class InterfaceTree
{
public static void displayTree(NetworkInterface iface, PrintStream out) throws SocketException
{
Enumeration<NetworkInterface> ifaces =
(iface == null)?NetworkInterface.getNetworkInterfaces() // We get the root interfaces
:iface.getSubInterfaces(); // or the child interfaces
if (iface != null)
{
out.println(iface.getName() + ":");
Enumeration<InetAddress> addresses = iface.getInetAddresses();
while (addresses.hasMoreElements())
out.print(addresses.nextElement() + ",");
out.print("(");
}
while (ifaces.hasMoreElements())
displayTree(ifaces.nextElement(), out);
if (iface != null) out.println(")");
}
public static void main(String[] args) throws SocketException
{
displayTree(null, System.out);
}
}