java擷取當前電腦網卡MAC地址

來源:互聯網
上載者:User

標籤: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地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.