Boa Tarde a todos, estou desenvolvendo uma aplicação comercial e, preciso ler o endereço MAC da placa de rede, eu ja consegui fazer isso … só que quando eu desconecto o cabo de rede, não consigo fazer essa leitura, não tenho nem idéia como fazer isso e, no caso de haver varias placas de rede … gostaria de sempre fazer a leitura da interface 0 … mesmo que não seja ela que a rede esteja utilizando no momento … o código que eu tenho é esse aki … desde ja agradeço a todos …
package maxctrl.componentes;
import java.net.InetAddress;
import java.net.NetworkInterface;
public class CarregarEnderecoMac {
public static String LerEnderecoMac() {
String enderecoMac = "";
try {
String ip = InetAddress.getLocalHost().getHostAddress();
String loopBack = ip.substring(0, 3);
if (loopBack.equals("127")) {
ip = getFirstIP();
}
InetAddress localHost = InetAddress.getByName(ip);
byte[] mac = new byte[0];
try {
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
mac = networkInterface.getHardwareAddress();
} catch (Exception e) {
}
try {
for (int i = 0; i < mac.length; i++) {
if (enderecoMac.isEmpty() == false) {
enderecoMac = enderecoMac + "-";
}
enderecoMac = enderecoMac + String.format("%02X", mac[i]);
}
} catch (Exception e) {
}
} catch (Exception e) {
}
if (enderecoMac.isEmpty()) {
enderecoMac = "00-00-00-00-00-00";
}
return enderecoMac;
}
private static String getFirstIP() {
java.util.Enumeration<java.net.NetworkInterface> ifaces = null;
try {
ifaces = java.net.NetworkInterface.getNetworkInterfaces();
} catch (java.net.SocketException e) { }
for (; ifaces.hasMoreElements();) {
java.util.Enumeration<java.net.InetAddress> addrs = ifaces.nextElement().getInetAddresses();
for (; addrs.hasMoreElements(); ) {
java.net.InetAddress addr = addrs.nextElement();
if (!addr.isLoopbackAddress() && !(addr instanceof java.net.Inet6Address))
return addr.getHostName();
}
}
return "127.0.0.1";
}
}