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); } }