Ermitteln Sie die Mac-Adresse in Java, wobei getHardwareAddress nicht deterministisch ist

7

Ich hatte ein Problem, die MAC-Adresse einer Maschine zu bekommen, die in diese Frage mit dem folgenden Code:

%Vor%

Ich würde jedoch gerne 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

%Vor%

Ausgabebeispiel (ich drucke direkt aus dem Byte-Array, aber es reicht, um das anders zu sehen, denke ich)

%Vor%

Vielen Dank im Voraus

    
Pedro Dusso 09.06.2012, 15:07
quelle

4 Antworten

9

B@91cee ist tatsächlich das Ergebnis toString() Methode der byte[] Arrays.

Ich würde vorschlagen, dass Sie den Wert stattdessen mit new String(mac) ausgeben.

byte[].toString() ist implementiert als:

%Vor%

Da der Standardwert Object.hashCode() als Adresse im Speicher implementiert ist, ist er nicht konsistent, da Sie jedes Mal ein neues Object erstellen.

Bearbeiten:

Da das zurückgegebene Byte in hex steht, sollten Sie es in eine dezimale Zeichenfolge konvertieren. Der Code kann hier

sehen     
Pau Kiat Wee 09.06.2012, 15:13
quelle
5

Hier ist ein Beispiel von Mkyong.com Website wie man die MAC-Adresse in Java bekommt:

%Vor%     
Eduardo Sanchez-Ros 09.06.2012 15:27
quelle
4

Die Antwort von spanish funktioniert nicht, wenn das Gerät nicht angeschlossen ist und unterschiedliche Werte abhängig von dem Netzwerk gibt, mit dem Sie verbunden sind.

dieser hängt nicht von irgendeiner IP-Adresse ab:

%Vor%     
amghar 13.11.2014 22:37
quelle
2
%Vor%     
s13o 12.05.2016 07:10
quelle

Tags und Links