基本上,我希望java检索mac地址并打开一个编码了Mac地址的URL。URL将利用PHP检查MAC地址是否在允许MAC地址列表中(我已经完成了这一部分),并将输出"true“或Java可以检查的任何内容。如果为真,Java会将boolean authorized更改为true。在此之后,我可以简单地发出一条if语句来继续或不继续。
我只需要一些简单的东西,因为我不是一个出色的程序员。我还在学习。
发布于 2011-04-02 16:17:06
使用
的MAC地址
- [Java 6](https://stackoverflow.com/questions/33960/how-do-you-get-the-ethernet-address-using-java)
- [Java 5](https://stackoverflow.com/questions/1333344/how-do-i-get-the-hosts-mac-address-using-java-5)
使用URLEncoder#encode(String, String)
对参数进行编码的
发布于 2011-04-02 16:45:33
下面的示例将列出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个)。可以确定特定InetAddress
的NetworkInterface
。您可以在本地主机中查询它,它可以工作:
InetAddress localhost = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localhost);
然而,我发现如果我连接到VPN,它会给出一个空的MAC地址。因此,如果您处理的系统可能配置不同,我不完全确定如何可靠地获得所需的MAC。不过,希望这能有所帮助。
一旦您有了正确的MAC地址,您就可以打开URL将其发送到您的服务器,如下所示:
new URL("http://server?mac=" + mac).openStream().close();
发布于 2011-04-02 19:23:55
您不应该在Java中这样做。Mac地址过滤是防火墙的领域。如果您需要这样做,您可以配置防火墙。这至少可以在Java中完成,这取决于您的防火墙。
在Linux中,配置iptables,多亏了命令行界面,这在Java中很容易实现。
在Windows上,应该有一个易于使用的API来实现这一点。使用JNA访问它。
https://stackoverflow.com/questions/5524264
复制相似问题