您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關本地MAC地址如何利用JAVA進行獲取,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
InetAddress對象
此類表示Internet協議(IP)地址。
IP地址是由IP使用的32位或128位無符號數字,構建UDP和TCP協議的低級協議。 IP地址結構由定義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的一個實例由一個IP地址和可能的相應主機名組成(取決于它是用主機名構造還是已經完成了反向主機名解析)。
NetworkInterface對象
此類表示由名稱組成的網絡接口和分配給此接口的IP地址列表。 用于標識組播組所在的本地接口。 接口通常由諸如“le0”的名稱所知。
代碼
/** * @Title: getMACAddress * @Description: 通過InetAddress對象獲取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 { // 獲得網絡接口對象(即網卡),并得到mac地址,mac地址存在于一個byte數組中。 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轉化為正整數 String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字符串所有小寫字母改為大寫成為正規的mac地址并返回 return sb.toString().toUpperCase(); }
演示
/** * @Title: Test.java * @Description: 測試獲取本地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: 測試獲取本地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 { // 獲取本機的InetAddress對象 InetAddress localHost = InetAddress.getLocalHost(); // 記錄開始時間 long start = System.currentTimeMillis(); // 測試獲取100次的執行時間 for (int i = 0; i < 100; i++) { String mac = getMACAddress(localHost); System.out.println(i + " " + mac); } // 記錄結束時間 long end = System.currentTimeMillis(); System.out.println("總耗時: " + (end - start)); } /** * @Title: getMACAddress * @Description: 通過InetAddress對象獲取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 { // 獲得網絡接口對象(即網卡),并得到mac地址,mac地址存在于一個byte數組中。 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轉化為正整數 String s = Integer.toHexString(mac[i] & 0xFF); sb.append(s.length() == 1 ? 0 + s : s); } // 把字符串所有小寫字母改為大寫成為正規的mac地址并返回 return sb.toString().toUpperCase(); } }
運行結果:
建議
從運行結果來看,java獲取本地MAC地址還是挺慢的。因為MAC不會輕易改變,所以可以考慮在項目運行時獲取一次MAC地址,然后存放到緩存中,用到MAC地址時從緩存中取,提高效率。
關于本地MAC地址如何利用JAVA進行獲取就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。