从JDK 1.6开始,Java开发人员可以通过NetworkInterface
类访问网卡详细信息。 在此示例中,我们向您展示如何获取Java中的localhost MAC地址。
App.java – Get MAC Address via NetworkInterface.getByInetAddress()
package com.mkyong;
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();
}
}
}
输出量
Current IP address : 192.168.1.22
Current MAC address : 00-26-B9-9B-61-BF
注意
仅允许此NetworkInterfaceNetworkInterface.getHardwareAddress()方法访问本地主机MAC地址,而不能访问远程主机MAC地址。
旧时光…
在发布JDK1.6之前,许多人正在使用命令和模式来获取Windows中的MAC地址,只需进行少量代码更改就可以使其获取* nux中的MAC地址。
App.java – Get MAC Address via command & pattern
package com.mkyong;
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));
}
}
}
}
输出量
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
这种过时的方法并不是真正有效的方法,因为它不会显示当前正在使用的MAC地址,而只是打印出当前连接的所有可用MAC地址。 但是,很高兴在这里分享。
翻译自: https://mkyong.com/java/how-to-get-mac-address-in-java/