如何使用Java中的NetworkInterface读取客户端MAC地址

时间:2012-03-12 14:34:08

标签: java

  

我有一个代码可以读取LocalHost Mac地址。   代码是从Servlet或JSP调用的   但未能读取REMOTE HOST或Client的地址。   我正在使用NetworkInterface类来实现该功能   我理解其读取localhost地址的一个原因是 - 能够查找LocalHost地址,但无法在远程主机上查找或执行反向dns搜索。   

    InetAddress addr = InetAddress.getByName(clientIP);
    NetworkInterface ni = NetworkInterface.getByInetAddress(addr);

            if (ni == null)
            {
                throw new SocketException("Cannot reach the host ##"+clientIP+"."); // Throws exception here for REMOTE Host or CLient
            }

    byte[] macAddrs = ni.getHardwareAddress();

    if (macAddrs == null) {
                throw new UnknownHostException("Host IP Adrress Lookup Failed...");
            }

            for (int k = 0; k < macAddrs.length; k++) {
                String macValue = String.format("%02X%s", macAddrs[k], (k < macAddrs.length - 1) ? "-" : "");
                macAddress.append(macValue);
            }

0 个答案:

没有答案