1. Einleitung
In diesem Tutorial verwenden wir Java, um die MAC-Adressen eines lokalen Computers abzurufen.
Eine MAC-Adresse ist die eindeutige Kennung für eine physische Netzwerkschnittstellenkarte.
Wir werden nur MAC-Adressen behandeln. Eine allgemeinere Übersicht über Netzwerkschnittstellen finden Sie unter Arbeiten mit Netzwerkschnittstellen in Java.
2. Beispiele
In den folgenden Beispielen verwenden wir die APIs java.net.NetworkInterface und java.net.InetAddress .
2.1. Machine Localhost
Lassen Sie uns zunächst die MAC-Adresse für den lokalen Host unseres Computers ermitteln:
InetAddress localHost = InetAddress.getLocalHost(); NetworkInterface ni = NetworkInterface.getByInetAddress(localHost); byte[] hardwareAddress = ni.getHardwareAddress();
Da NetworkInterface # getHardwareAddress ein Array von Bytes zurückgibt, können wir das Ergebnis formatieren:
String[] hexadecimal = new String[hardwareAddress.length]; for (int i = 0; i < hardwareAddress.length; i++) { hexadecimal[i] = String.format("%02X", hardwareAddress[i]); } String macAddress = String.join("-", hexadecimal);
Beachten Sie, wie wir jedes Byte im Array im String # -Format auf eine Hexadezimalzahl formatieren .
Danach können wir alle formatierten Elemente mit einem „-“ (Bindestrich) verbinden.
2.2. Lokale IP
Zweitens erhalten wir die MAC-Adresse für eine bestimmte lokale IP-Adresse:
InetAddress localIP = InetAddress.getByName("192.168.1.108"); NetworkInterface ni = NetworkInterface.getByInetAddress(localIP); byte[] macAddress = ni.getHardwareAddress();
Beachten Sie erneut, wie wir ein Array von Bytes für die MAC-Adresse erhalten.
2.3. Alle Netzwerkschnittstellen
Lassen Sie uns abschließend die MAC-Adressen für alle Netzwerkschnittstellen auf unserem Computer abrufen:
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces(); while (networkInterfaces.hasMoreElements()) { NetworkInterface ni = networkInterfaces.nextElement(); byte[] hardwareAddress = ni.getHardwareAddress(); if (hardwareAddress != null) { String[] hexadecimalFormat = new String[hardwareAddress.length]; for (int i = 0; i < hardwareAddress.length; i++) { hexadecimalFormat[i] = String.format("%02X", hardwareAddress[i]); } System.out.println(String.join("-", hexadecimalFormat)); } }
Da getNetworkInterfaces sowohl physische als auch virtuelle Schnittstellen zurückgibt, müssen wir die virtuellen herausfiltern.
Wir können dies zum Beispiel tun, indem wir getHardwareAddress auf Null prüfen .
3. Fazit
In diesem kurzen Tutorial haben wir verschiedene Möglichkeiten untersucht, um MAC-Adressen für einen lokalen Computer abzurufen.
Wie üblich finden Sie den gesamten Quellcode mit den Beispielen in diesem Tutorial auf GitHub.