mir ein Problem mit der MAC-Adresse einer Maschine zu bekommen, die in this question mit dem Folge Code gelöst wurde:in Java unter Verwendung von getHardwareAddress nicht-determinis
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());
Allerdings würde Ich mag an wissen, warum dieser Code nicht funktioniert. Bei jedem Lesen der MAC-Adresse wird ein anderer Wert zurückgegeben. Zuerst dachte ich, es sei wegen getHash, vielleicht benutze ich einen Timestamp, den ich nicht kenne ... Aber selbst wenn man es entfernt, ändert sich das Ergebnis.
-Code
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;
}
}
Ausgabebeispiel (Ich bin das Drucken direkt von Byte-Array, aber es ist genug, dass anders zu sehen, ich denke)
[[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]
Vielen Dank im Voraus
Sie drucken den Standard 'toString' eines Byte-Array. –