So erhalten Sie die MAC-Adresse in Java
Seit JDK 1.6 können Java-Entwickler über die KlasseNetworkInterfaceauf Netzwerkkartendetails zugreifen. In diesem Beispiel zeigen wir Ihnen, wie Sie die localhost MAC-Adresse in Java erhalten.
App.java – Get MAC Address via NetworkInterface.getByInetAddress()
package com.example;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
public class App{
public static void main(String[] args){
InetAddress ip;
try {
ip = InetAddress.getLocalHost();
System.out.println("Current IP address : " + ip.getHostAddress());
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte[] mac = network.getHardwareAddress();
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(sb.toString());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e){
e.printStackTrace();
}
}
}
Ausgabe
Current IP address : 192.168.1.22 Current MAC address : 00-26-B9-9B-61-BF
Note
Diese NetworkInterfaceNetworkInterface.getHardwareAddress () -Methode darf nur auf die MAC-Adresse des lokalen Hosts zugreifen, nicht auf die MAC-Adresse des Remote-Hosts.
Alter Tag…
Vor der Veröffentlichung von JDK1.6 verwenden viele den Befehl und das Muster, um die MAC-Adresse in Windows abzurufen. Durch geringfügige Codeänderungen kann die MAC-Adresse auch in * nux abgerufen werden.
App.java - Get MAC Address via command & pattern
package com.example;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class App{
public static void main(String[] args) throws IOException{
String command = "ipconfig /all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader inn = new BufferedReader(new InputStreamReader(p.getInputStream()));
Pattern pattern = Pattern.compile(".*Physical Addres.*: (.*)");
while (true) {
String line = inn.readLine();
if (line == null)
break;
Matcher mm = pattern.matcher(line);
if (mm.matches()) {
System.out.println(mm.group(1));
}
}
}
}
Ausgabe
02-00-4E-43-50-49 90-4C-E5-44-B9-8F 00-26-B9-9B-61-BF 00-00-00-00-00-00-00-E0 00-00-00-00-00-00-00-E0 00-00-00-00-00-00-00-E0 00-00-00-00-00-00-00-E0 00-00-00-00-00-00-00-E0
Diese veraltete Methode ist nicht wirklich effizient, da sie nicht anzeigt, welche MAC-Adresse gerade verwendet wird. Sie druckt lediglich alle verfügbaren MAC-Adressen aus, die derzeit angehängt sind. Es ist jedoch schön, hier zu teilen.