A interface InterfaceAddress
Autor: Cleuber | Publicado: 2009-02-02T20:49:00-03:00

Algo que não tinha sabido , até o momento, é dos recursos da nova interface InterfaceAddress (nova interface do jsdk 1.6). Através dela podemos obter uma lista de adaptadores de rede e suas respectivas informações, como por exemplo em um código como este:import java.net.InterfaceAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Iterator;import java.util.List;import java.util.Enumeration;public class NetworkInterfaces {public static void main(String[] args) throws Exception {NetworkParameter np = new NetworkParameter();// obtem todas as interfaces de rede da máquina.Enumeration en = NetworkInterface.getNetworkInterfaces();// exibe informaçõeswhile (en.hasMoreElements()) { NetworkInterface ni = en.nextElement(); np.printParameter(ni); System.out.println("==================================");}}}class NetworkParameter {public void printParameter(NetworkInterface ni) throws SocketException {// Exibe todas as informações da interface de redeSystem.out.println("Interface de rede:");System.out.println("------------------");System.out.println(" Nome = " + ni.getName());System.out.println(" Nome de exibição = " + ni.getDisplayName());System.out.println(" Está ativa = " + ni.isUp());System.out.println(" Suporta multicast = " + ni.supportsMulticast());System.out.println(" É local = " + ni.isLoopback());System.out.println(" É virtual = " + ni.isVirtual());System.out.println(" É ponto a ponto = " + ni.isPointToPoint());System.out.println(" Endereço do hardware = " + ni.getHardwareAddress());System.out.println(" MTU = " + ni.getMTU());// Obtém uma lista de todas as interfaces de redeSystem.out.println("\nLista de endereços da Interface:");System.out.println("----------------------------");List list = ni.getInterfaceAddresses();Iterator it = list.iterator();// iterarwhile (it.hasNext()) { InterfaceAddress ia = it.next(); System.out.println(" IP = " + ia.getAddress()); System.out.println(" Broadcast = " + ia.getBroadcast()); System.out.println(" Tamanho do prefixo da rede = " + ia.getNetworkPrefixLength()); System.out.println("");}}}Quando colocado em execução produz o resultado abaixo (aqui no meu notebook):Interface de rede:------------------Nome = loNome de exibição = MS TCP Loopback interfaceEstá ativa = trueSuporta multicast = trueÉ local = trueÉ virtual = falseÉ ponto a ponto = falseEndereço do hardware = nullMTU = 1520Lista de endereços da Interface:----------------------------IP = /127.0.0.1Broadcast = /127.255.255.255Tamanho do prefixo da rede = 8==================================Interface de rede:------------------Nome = eth0Nome de exibição = VIA Compatable Fast Ethernet Adapter - Miniporta do agendador de pacotesEstá ativa = trueSuporta multicast = trueÉ local = falseÉ virtual = falseÉ ponto a ponto = falseEndereço do hardware = [B@42e816MTU = 1500Lista de endereços da Interface:----------------------------IP = /192.168.254.2Broadcast = /192.168.254.255Tamanho do prefixo da rede = 24==================================Interface de rede:------------------Nome = eth1Nome de exibição = RT73 USB Wireless LAN Card - Miniporta do agendador de pacotesEstá ativa = falseSuporta multicast = trueÉ local = falseÉ virtual = falseÉ ponto a ponto = falseEndereço do hardware = [B@9304b1MTU = 1500Lista de endereços da Interface:----------------------------==================================