首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 獲取 MAC 地址的兩種實用方法

     編輯:Java 相關知識

方法一:本機網卡獲取(適用於本地)

public static String getLocalMac() throws Exception {
    InetAddress ia = InetAddress.getLocalHost();
    byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < mac.length; i++) {
        if (i != 0) sb.append("-");
        String s = Integer.toHexString(mac[i] & 0xFF);
        sb.append(s.length() == 1 ? "0" + s : s);
    }
    return sb.toString().toUpperCase();
}

原理:透過 NetworkInterface 獲取硬體地址,位運算 & 0xFF 確保正數十六進制。

方法二:遠端 IP 獲取(需 nbtstat 支援)

public static String getRemoteMac(String ip) {
    try {
        Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
        try (BufferedReader br = new BufferedReader(
                new InputStreamReader(p.getInputStream(), "GBK"))) {
            String line;
            while ((line = br.readLine()) != null) {
                if (line.contains("MAC 地址") || line.contains("MAC Address")) {
                    return line.substring(line.indexOf("=") + 1).trim();
                }
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

關鍵點:

  • 輸入流需指定 GBK 編碼避免亂碼
  • Windows 系統專用,Linux 需改用 arp -a 或其他指令
  • 需管理員權限執行

比較與建議

維度本機法遠端法
適用範圍本機局域網 Windows 主機
效能極快較慢(進程開銷)
跨平台是否

推薦:本機優先用方法一;遠端 Windows 環境可用方法二,注意編碼與權限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved