对不起,我的英语不好。 有用于控制智能房屋的简单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!");