標籤:mac地址
package com.yjm.testmac;import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.net.UnknownHostException;import java.util.Enumeration;public class MacTest {public static void main(String[] args) {// 獲得本機全部的mac地址資訊test();// 根據當前的IP地址資訊對象獲得在用的網卡資訊test1();}private static void test1() {System.out.println("==========test1方法中運行start......");try {InetAddress ipInfo = InetAddress.getLocalHost();// 輸出IP地址內容System.out.println(ipInfo.getHostAddress());// 獲得網卡內容位元組數組byte[] byAddress = NetworkInterface.getByInetAddress(ipInfo).getHardwareAddress();// 輸出數組長度System.out.println(byAddress.length);// 地址字串容器StringBuffer stringBuffer = new StringBuffer();// 單個數組值進行轉換for (int i = 0; i < byAddress.length; i++) {// 單個數組值 就是一個地址位元添加分隔字元if (i != 0) {stringBuffer.append("-");}// 位元組轉換為16進位數int number = byAddress[i] & 0xff;String strAddr = Integer.toHexString(number);System.out.println("轉換後:=======================================" + strAddr);// 當轉換的值是 個位元時,在前面補0if (strAddr.length() == 1) {stringBuffer.append("0" + strAddr);} else {stringBuffer.append(strAddr);}}// 輸出轉換後的mac地址System.out.println("轉換後的MacAddress為:"+ stringBuffer.toString().toUpperCase());} catch (UnknownHostException e) {e.printStackTrace();} catch (SocketException e) {e.printStackTrace();}System.out.println("==========test1方法中運行over......");}private static void test() {System.out.println("==========test方法中運行start......");// 初始化 網卡資訊容器Enumeration<NetworkInterface> allNetDevices = null;// 初始化一張網卡對象NetworkInterface networkInterface = null;// 等到網卡的byte數組資訊byte[] networkbyte = null;// 盛放 封裝的網卡資訊字串StringBuffer stringBuffer=null;try {// 擷取網卡資訊容器allNetDevices = NetworkInterface.getNetworkInterfaces();while (allNetDevices.hasMoreElements()) {// 擷取單張網卡對象 迭代輸出網卡資訊networkInterface = allNetDevices.nextElement();// 獲得正在 啟動並執行 網卡資訊if (networkInterface.isUp()) {//轉換位元組後用到的網卡地址容器stringBuffer = new StringBuffer();//網卡mac地址位元組容器networkbyte = networkInterface.getHardwareAddress();//網卡名字System.out.println("網卡 名字: "+networkInterface.getName()); //網卡資訊System.out.println("網卡資訊 : "+networkInterface.getDisplayName());// 單個數組值進行轉換for (int i = 0; i < networkbyte.length; i++) {// 單個數組值 就是一個地址位元添加分隔字元if (i != 0) {stringBuffer.append("-");}// 位元組轉換為16進位數int number = networkbyte[i] & 0xff;String strAddr = Integer.toHexString(number);System.out.println("轉換後:==================================" + strAddr);// 當轉換的值是 個位元時,在前面補0if (strAddr.length() == 1) {stringBuffer.append("0" + strAddr);} else {stringBuffer.append(strAddr);}}// 輸出轉換後的mac地址System.out.println("轉換後的MacAddress為:"+ stringBuffer.toString().toUpperCase());}}} catch (SocketException e) {e.printStackTrace();}System.out.println("==========test方法中運行 over......");}}
方法在Linux下只能得到127.0.0.1,只能在Windows下擷取正確的ip地址。
輸出結果:
==========test方法中運行start......
網卡 名字: lo
網卡資訊 : Software Loopback Interface 1
轉換後的MacAddress為:
網卡 名字: eth3
網卡資訊 : Realtek PCIe GBE Family Controller
轉換後:==================================14
轉換後:==================================da
轉換後:==================================e9
轉換後:==================================2b
轉換後:==================================38
轉換後:==================================10
轉換後的MacAddress為:14-DA-E9-2B-38-10
網卡 名字: net4
網卡資訊 : Teredo Tunneling Pseudo-Interface
轉換後:==================================0
轉換後:==================================0
轉換後:==================================0
轉換後:==================================0
轉換後:==================================0
轉換後:==================================0
轉換後:==================================0
轉換後:==================================e0
轉換後的MacAddress為:00-00-00-00-00-00-00-E0
==========test方法中運行 over......
==========test1方法中運行start......
192.168.101.243
6
轉換後:=======================================14
轉換後:=======================================da
轉換後:=======================================e9
轉換後:=======================================2b
轉換後:=======================================38
轉換後:=======================================10
轉換後的MacAddress為:14-DA-E9-2B-38-10
==========test1方法中運行over......
java擷取當前電腦網卡MAC地址