Java - Erste MAC-Adresse des Linux-Systems
Ich versuche, die MAC-Adresse eines linux-Systems mit diesem code:
try {
ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
//System.out.print("Current MAC address: ");
for (int i = 0; i < mac.length; i++) {
is = is + Integer.parseInt(
String.format("%02X%s", mac[i], (i < mac.length - 1) ? "" : ""),16);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
Aber es stürzt ab... weiß jemand warum?
- Welche Fehlermeldung bekommen Sie, wenn es abstürzt?
- pastebin.com/891wKcXz Und ja, ich habe überprüft, dass es dieses Teil. Wenn ich nur gestellt ist = ist + Integer.parseInt([mac-Adresse],16); funktioniert der code einwandfrei
- Die Linie 133?
- byte[] mac = Netzwerk.getHardwareAddress();
- Das "system" nicht eine MAC-Adresse haben. Ein Netzwerk-interface hat. Sie können mehrere NICs in einem einzigen system und damit mehrere MAC Adressen, wie gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus Ihren Kommentaren deutlich
network
istnull
, was bedeutet, dassgetByInetAddress()
konnte nicht finden, eine Schnittstelle mit der IP-Adresse (siehe JavaDocs: http://download.oracle.com/javase/1.5.0/docs/api/java/net/NetworkInterface.html#getByInetAddress(java.net.InetAddress)).Vielleicht haben Sie mehr als ein Netzwerk-interface, und ich würde nicht zählen auf der interface-name. Ich schlage vor, Sie gehen über alle Schnittstellen und schauen Sie für eine, die hat eine MAC-Adresse.
Sie können dieses Beispiel als Ausgangspunkt Zeile:
Nur eine kleine änderung des Codes der Kerl :
Dieser code wurde getestet unter Windows, Linux (Ubuntu) und Mac OS X-mit Erfolg.
Weil das Netzwerk kann auf null gesetzt werden, Ignoriere ich alle null-Fällen und ich habe auch Leerzeilen ignorieren-Adressen. Ich denke, wenn wir dies nicht tun, sehen wir den Absturz. Ich wähle die erste Gefundene Adresse und es funktioniert, aber es kann falsch sein, so testen Sie es einfach.