Java/JSPでクライアントのネットワークカードのMACアドレスを取得する3つの方法を解説します。

Java/JSPで、クライアントのネットワークカードのMACアドレスを取得する方法は次の3つあります。

JavaのNetworkInterfaceクラスを使用する方法:これは最も一般的な方法であり、NetworkInterfaceクラスのgetHardwareAddress()メソッドを使用してMACアドレスを取得できます。以下はサンプルコードです:

import java.net.NetworkInterface;
import java.net.SocketException;

public class GetMacAddress {
    public static void main(String[] args) {
        try {
            // 获取本地网络接口对象
            NetworkInterface networkInterface = NetworkInterface.getByName("eth0");

            // 获取MAC地址
            byte[] mac = networkInterface.getHardwareAddress();

            // 将MAC地址转换为十六进制字符串
            StringBuilder macAddress = new StringBuilder();
            for (int i = 0; i < mac.length; i++) {
                macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
            }

            System.out.println("MAC地址:" + macAddress.toString());
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

2、JavaのInetAddressクラスを使用する:InetAddressクラスのgetLocalHost()メソッドを使用してローカルホストのInetAddressオブジェクトを取得し、次にgetHostName()メソッドを使用してホスト名を取得し、getByName()メソッドを使用してInetAddressオブジェクトを取得し、最後にgetHardwareAddress()メソッドを使用してMACアドレスを取得します。以下はサンプルコードです:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;

public class GetMacAddress {
    public static void main(String[] args) {
        try {
            // 获取本地主机InetAddress对象
            InetAddress localHost = InetAddress.getLocalHost();

            // 获取主机名
            String hostname = localHost.getHostName();

            // 获取本地网络接口对象
            NetworkInterface networkInterface = NetworkInterface.getByName(hostname);

            // 获取MAC地址
            byte[] mac = networkInterface.getHardwareAddress();

            // 将MAC地址转换为十六进制字符串
            StringBuilder macAddress = new StringBuilder();
            for (int i = 0; i < mac.length; i++) {
                macAddress.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
            }

            System.out.println("MAC地址:" + macAddress.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

JavaScriptとJSPを使用する:クライアント側でMACアドレスを取得し、それをAjaxを通じてJSPページに送信することができます。以下はサンプルコードです:

<!DOCTYPE html>
<html>
<head>
    <title>Get MAC Address</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        function getMacAddress() {
            var macAddress = null;
            new ActiveXObject("WScript.Shell").Run("cmd /k getmac /v", 0, true);
            var wmi = new ActiveXObject("WbemScripting.SWbemLocator");
            var service = wmi.ConnectServer(".");
            var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True");
            var e = new Enumerator(properties);
            for (; !e.atEnd(); e.moveNext()) {
                var p = e.item();
                macAddress = p.MACAddress;
                break;
            }
            return macAddress;
        }

        $(document).ready(function() {
            var macAddress = getMacAddress();
            $.ajax({
                url: "getMacAddress.jsp",
                type: "POST",
                data: {macAddress: macAddress},
                success: function(response) {
                    console.log(response);
                }
            });
        });
    </script>
</head>
<body>
</body>
</html>

getMacAddress.jspでは、request.getParameter(“macAddress”)を使用してMACアドレスパラメータを取得できます。

bannerAds