JAVA獲取本地MAC地址的方法
InetAddress對(duì)象
此類表示Internet協(xié)議(IP)地址。
IP地址是由IP使用的32位或128位無符號(hào)數(shù)字,構(gòu)建UDP和TCP協(xié)議的低級(jí)協(xié)議。 IP地址結(jié)構(gòu)由定義RFC 790: Assigned Numbers , RFC 1918: Address Allocation for Private Internets , RFC 2365: Administratively Scoped IP Multicast和RFC 2373: IP Version 6 Addressing Architecture 。 InetAddress的一個(gè)實(shí)例由一個(gè)IP地址和可能的相應(yīng)主機(jī)名組成(取決于它是用主機(jī)名構(gòu)造還是已經(jīng)完成了反向主機(jī)名解析)。
NetworkInterface對(duì)象
此類表示由名稱組成的網(wǎng)絡(luò)接口和分配給此接口的IP地址列表。 用于標(biāo)識(shí)組播組所在的本地接口。 接口通常由諸如“l(fā)e0”的名稱所知。
代碼
/** * @Title: getMACAddress * @Description: 通過InetAddress對(duì)象獲取MAC地址 * @param inetAddress * @return * @throws Exception String * @author: wangyk * @date: 2020年11月23日 上午10:24:42 * @version: 2.0.1 */ private static String getMACAddress(InetAddress inetAddress) throws Exception { // 獲得網(wǎng)絡(luò)接口對(duì)象(即網(wǎng)卡),并得到mac地址,mac地址存在于一個(gè)byte數(shù)組中。 byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress(); // 下面代碼是把mac地址拼裝成String StringBuffer sb = new StringBuffer(); for (int i = 0; i < mac.length; i++) { if (i != 0) { sb.append("-"); } // mac[i] & 0xFF 是為了把byte轉(zhuǎn)化為正整數(shù) String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字符串所有小寫字母改為大寫成為正規(guī)的mac地址并返回 return sb.toString().toUpperCase(); }
演示
/** * @Title: Test.java * @Description: 測(cè)試獲取本地ip * @author: wangyk * @date: 2020年11月23日 上午10:21:13 * @version: 2.0.1 */ package com.yike.datamigration; import java.net.InetAddress; import java.net.NetworkInterface; /** * @Title: Test.java * @Description: 測(cè)試獲取本地ip * @author: wangyk * @date: 2020年11月23日 上午10:21:13 * @version: 2.0.1 */ public class Test { /** * @Title: main * @Description: 程序的入口 * @param args * @throws Exception void * @author: wangyk * @date: 2020年11月23日 上午10:25:25 * @version: 2.0.1 */ public static void main(String[] args) throws Exception { // 獲取本機(jī)的InetAddress對(duì)象 InetAddress localHost = InetAddress.getLocalHost(); // 記錄開始時(shí)間 long start = System.currentTimeMillis(); // 測(cè)試獲取100次的執(zhí)行時(shí)間 for (int i = 0; i < 100; i++) { String mac = getMACAddress(localHost); System.out.println(i + " " + mac); } // 記錄結(jié)束時(shí)間 long end = System.currentTimeMillis(); System.out.println("總耗時(shí): " + (end - start)); } /** * @Title: getMACAddress * @Description: 通過InetAddress對(duì)象獲取MAC地址 * @param inetAddress * @return * @throws Exception String * @author: wangyk * @date: 2020年11月23日 上午10:24:42 * @version: 2.0.1 */ private static String getMACAddress(InetAddress inetAddress) throws Exception { // 獲得網(wǎng)絡(luò)接口對(duì)象(即網(wǎng)卡),并得到mac地址,mac地址存在于一個(gè)byte數(shù)組中。 byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress(); // 下面代碼是把mac地址拼裝成String StringBuffer sb = new StringBuffer(); for (int i = 0; i < mac.length; i++) { if (i != 0) { sb.append("-"); } // mac[i] & 0xFF 是為了把byte轉(zhuǎn)化為正整數(shù) String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字符串所有小寫字母改為大寫成為正規(guī)的mac地址并返回 return sb.toString().toUpperCase(); } }
運(yùn)行結(jié)果:
建議
從運(yùn)行結(jié)果來看,java獲取本地MAC地址還是挺慢的。因?yàn)镸AC不會(huì)輕易改變,所以可以考慮在項(xiàng)目運(yùn)行時(shí)獲取一次MAC地址,然后存放到緩存中,用到MAC地址時(shí)從緩存中取,提高效率。
到此這篇關(guān)于JAVA獲取本地MAC地址的方法的文章就介紹到這了,更多相關(guān)JAVA獲取MAC地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot?集成spring?cache緩存的解決方案
這篇文章主要介紹了Springboot?集成spring?cache緩存,使用緩存最關(guān)鍵的一點(diǎn)就是保證緩存與數(shù)據(jù)庫的數(shù)據(jù)一致性,本文給大家介紹最常用的緩存操作模式,對(duì)Springboot?集成spring?cache緩存操作流程感興趣的朋友一起看看吧2022-06-06SpringCloud容器化服務(wù)發(fā)現(xiàn)及注冊(cè)實(shí)現(xiàn)方法解析
這篇文章主要介紹了SpringCloud容器化服務(wù)發(fā)現(xiàn)及注冊(cè)實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08java使用POI讀取properties文件并寫到Excel的方法
這篇文章主要介紹了java使用POI讀取properties文件并寫到Excel的方法,涉及java操作properties文件及Excel文件的相關(guān)技巧,需要的朋友可以參考下2015-06-06RocketMQ?offset確認(rèn)機(jī)制示例詳解
這篇文章主要為大家介紹了RocketMQ?offset確認(rèn)機(jī)制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09IDEA2023.3.4開啟SpringBoot項(xiàng)目的熱部署(圖文)
本文使用的開發(fā)工具是idea,使用的是springboot框架開發(fā)的項(xiàng)目,配置熱部署,可以提高開發(fā)效率,文中通過圖文介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02spring中websocket定時(shí)任務(wù)實(shí)現(xiàn)實(shí)時(shí)推送
本文主要介紹了spring中websocket定時(shí)任務(wù)實(shí)現(xiàn)實(shí)時(shí)推送,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01IDEA報(bào)java:?java.lang.OutOfMemoryError:?Java?heap?space錯(cuò)誤
這篇文章主要給大家介紹了關(guān)于IDEA報(bào)java:?java.lang.OutOfMemoryError:?Java?heap?space錯(cuò)誤的解決辦法,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01