基本上我希望java检索mac地址并打开一个带有Mac地址编码的URL。 URL将利用PHP来检查MAC地址是否在允许MAC地址列表中(我已经完成了这部分)并输出“true”或Java可以检查的任何内容。如果确实如此,Java会将boolean授权更改为true。在那之后,我可以简单地发出一个if语句来继续或不继续。
我只需要一些简单的东西,因为我不是一个出色的程序员。我还在学习。
答案 0 :(得分:3)
获取MAC地址
答案 1 :(得分:1)
这是一个示例,列出了Java 6中的网络接口的名称和MAC:
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements()) {
NetworkInterface ni = e.nextElement();
if (!ni.isUp()) {
continue;
}
byte[] address = ni.getHardwareAddress();
if (address == null || address.length == 0) {
continue;
}
StringBuilder sb = new StringBuilder(2 * address.length);
for (byte b : address) {
sb.append("0123456789ABCDEF".charAt((b & 0xF0) >> 4));
sb.append("0123456789ABCDEF".charAt((b & 0x0F)));
sb.append(":");
}
sb.deleteCharAt(sb.length() - 1);
String mac = sb.toString();
System.out.println(ni.getName() + " " + mac);
}
您可以轻松获得多个(由于VMware网络适配器,我得到3个)。可以确定特定NetworkInterface
的{{1}}。您可以查询localhost,它可以工作:
InetAddress
但是我发现,如果我连接到VPN,它将提供一个空的MAC地址。因此,如果您正在处理可以配置不同的系统,我不完全确定如何可靠地获得所需的MAC。希望这会有所帮助。
获得正确的MAC地址后,您可以打开一个URL,将其发送到您的服务器,如下所示:
InetAddress localhost = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localhost);
答案 2 :(得分:1)
你不应该用Java来做这件事。 Mac Addess过滤是防火墙的领域。如果需要执行此操作,请配置防火墙。这至少可以通过Java完成,具体取决于您的防火墙。
在Linux中,配置你的iptables,这要归功于命令行界面,这很容易来自Java。
在Windows上,应该有一个易于使用的API。使用JNA访问它。