estaba teniendo un problema para obtener la dirección MAC de una máquina, que se resolvió en this question utilizando el código de seguimiento:Obtener dirección MAC en Java utilizando getHardwareAddress no determinista
Process p = Runtime.getRuntime().exec("getmac /fo csv /nh");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
String line;
line = in.readLine();
String[] result = line.split(",");
System.out.println(result[0].replace('"', ' ').trim());
Sin embargo, me gustaría saber por qué este código no está funcionando. Cada vez que lee la dirección MAC, devuelve un valor diferente. Primero pensé que era porque getHash, tal vez usando una marca de tiempo, no lo sé ... Pero incluso eliminándolo, el resultado cambia.
Código
public static byte[] getMacAddress() {
try {
Enumeration<NetworkInterface> nwInterface = NetworkInterface.getNetworkInterfaces();
while (nwInterface.hasMoreElements()) {
NetworkInterface nis = nwInterface.nextElement();
if (nis != null) {
byte[] mac = nis.getHardwareAddress();
if (mac != null) {
/*
* Extract each array of mac address and generate a
* hashCode for it
*/
return mac;//.hashCode();
} else {
Logger.getLogger(Utils.class.getName()).log(Level.WARNING, "Address doesn't exist or is not accessible");
}
} else {
Logger.getLogger(Utils.class.getName()).log(Level.WARNING, "Network Interface for the specified address is not found.");
}
return null;
}
} catch (SocketException ex) {
Logger.getLogger(Utils.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}
Ejemplo de salida (estoy imprimir directamente desde el conjunto de bytes, pero es lo suficientemente diferente de ver que creo)
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
[[email protected]
Gracias de antemano
que está imprimiendo el valor por defecto 'toString' de una matriz de bytes. –