Java程式:獲取Windows和Linux系統MAC地址
計算機可以透過名為網路介面控制器 (NIC)的硬體或軟體元件連線到網路並與其他裝置通訊。NIC有助於建立幫助在兩個裝置之間傳輸和接收資料的層。MAC地址,也稱為媒體訪問控制地址,是NIC的唯一識別符號。它由48位十六進位制數字組成。它由資料鏈路層用於控制訪問、確保資料完整性並識別網路裝置。在本節中,我們將學習如何使用Java查詢Windows和Linux機器的MAC地址。
裝置的MAC地址不會改變。MAC地址被網路裝置(如路由器和交換機)使用。這些裝置(如路由器和交換機)通常用於在網路上的不同裝置之間轉發資料包。當裝置向同一網路上的另一個裝置傳送資料包時,資料包包括目標接收方的MAC地址在資料包頭中。然後,網路裝置使用從資料包頭接收到的MAC地址將資料包傳遞給目標接收方。
現在,我們將詳細瞭解用於查詢Linux和Windows機器MAC地址的不同方法。Java提供InetAddress類和NetworkInterface類來執行MAC地址操作。
現在,我們將研究查詢Windows和Linux機器MAC地址的不同程式碼實現。
查詢Windows機器的MAC地址
我們將實現Java程式碼來查詢Windows機器的MAC地址。查詢MAC地址的演算法如下。
演算法
使用InetAddress.getLocalHost()獲取InetAddress例項。
透過傳遞InetAddress物件,使用NetworkInterface.getByInetAddress()獲取NetworkInterface例項。使用網路介面例項上的getHardwareAddress()獲取MAC地址並將其儲存在位元組陣列中。
宣告一個字串構建器並迴圈遍歷位元組陣列。
透過使用format()將位元組轉換為十六進位制數字來追加位元組並列印它。
示例
在這個例子中,我們首先使用'InetAddress.getLocalHost()'建立了一個InteAddress例項,並將其傳遞給NetworkInterface建構函式,這有助於我們建立一個NetworkInterface物件。然後,我們在NetworkInterface物件上呼叫內建的'getHardwareAddress()'方法,以位元組陣列的形式獲取mac地址。獲得mac地址的位元組陣列後,我們使用字串構建器物件並迴圈遍歷MAC陣列,將位元組轉換為十六進位制格式並列印輸出。
import java.net.*;
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
InetAddress address = InetAddress.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(address);
byte[] mac = networkInterface.getHardwareAddress();
System.out.print("MAC address : ");
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
stringBuilder.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(stringBuilder.toString());
}
}
輸出
MAC address of this system is : 00-15-F2-5D-8A-80
查詢Linux機器的MAC地址
我們將實現Java程式碼來查詢Linux機器的MAC地址。查詢MAC地址的步驟如下。
步驟
匯入所有必需的Java庫。
使用NetworkInterface.getNetworkInterfaces()獲取所有網路介面。
對於每個網路,使用network.getHardwareAddress()獲取MAC地址。
如果MAC地址不為空,則宣告一個字串構建器並迴圈遍歷MAC地址。
透過使用format()將位元組轉換為十六進位制數字來追加位元組並列印它。
示例
在這個例子中,我們使用函式'NetworkInterface.getNetworkInterfaces()'獲取NetworkInterfaces的列舉。然後,我們迭代這個列舉,直到列舉中存在NetworkInterface,我們使用'getHardwareAddress()'函式獲取每個NetworkInterface的MAC地址,該函式通常返回MAC地址的位元組陣列,並且該陣列透過使用StringBuilder物件和format()方法轉換為十六進位制值,並將所有內容附加到StringBuilder物件,並透過將StringBuilder物件轉換為toString()方法來列印該值。因此,我們使用Java程式碼獲得了Linux機器的MAC地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;
public class Main{
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
byte[] mac = networkInterface.getHardwareAddress();
if (mac != null) {
System.out.print("MAC address : ");
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < mac.length; i++) {
stringBuilder.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
}
System.out.println(stringBuilder.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
輸出
MAC address : 54-E1-AD-3F-2E-63 MAC address : 0A-B1-CD-2F-6A-83 MAC address : 12-34-56-78-9A-BC
因此,在本文中,我們學習瞭如何使用Java獲取Windows和Linux機器的系統MAC地址。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP