如何使用Java获取客户端的mac地址?

时间:2018-07-22 12:17:49

标签: java macos server client nio

对不起,我的英语不好。 有用于控制智能房屋的简单Java服务器。我想使用受信任的mac地址列表来组织安全检查。如果客户端的mac地址受信任,则客户端可以接受服务器。 好吧,我遇到了一个问题。我根本无法获得任何客户端的Mac,我也不知道该怎么办。 请帮帮我 :( PS。 我使用标准的java nio库。 我的代码:

    ServerSocketChannel ssc = (ServerSocketChannel) key.channel();
    SocketChannel client = ssc.accept();

    char [] tempIP = client.socket().getInetAddress().toString().toCharArray();
    StringBuilder temp = new StringBuilder ();
    for (char ch : tempIP) {
        if (ch == '/')
            continue;
        temp.append(ch);
    }

    String clientIP = temp.toString();
    System.out.println(clientIP);
    InetAddress address = InetAddress.getByName(clientIP);
    NetworkInterface ni = NetworkInterface.getByInetAddress(address);
    if (ni != null) {
        byte [] mac = ni.getHardwareAddress();
        if (mac != null) {
            for (int i=0; i!=mac.length; i++) {
                System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");

            }
        } else {
            System.out.println("Address doen't not exist or is not accessiable");
        }
    } else {
        System.out.println("Network Interface for the specified address is not found!");
    }

    client.configureBlocking(false);
    client.setOption(StandardSocketOptions.SO_KEEPALIVE, true);
    client.setOption(StandardSocketOptions.TCP_NODELAY, true);
    client.register(selector, SelectionKey.OP_READ);
    System.out.println("Client is connected!");

0 个答案:

没有答案