如何在Java中获取MAC地址

从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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值