首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java MAC地址授权

Java MAC地址授权
EN

Stack Overflow用户
提问于 2011-04-02 16:09:21
回答 3查看 1.8K关注 0票数 0

基本上,我希望java检索mac地址并打开一个编码了Mac地址的URL。URL将利用PHP检查MAC地址是否在允许MAC地址列表中(我已经完成了这一部分),并将输出"true“或Java可以检查的任何内容。如果为真,Java会将boolean authorized更改为true。在此之后,我可以简单地发出一条if语句来继续或不继续。

我只需要一些简单的东西,因为我不是一个出色的程序员。我还在学习。

EN

回答 3

Stack Overflow用户

发布于 2011-04-02 16:17:06

使用

  1. 获取

的MAC地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- [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)对参数进行编码的

票数 3
EN

Stack Overflow用户

发布于 2011-04-02 16:45:33

下面的示例将列出Java 6中的网络接口的名称和MAC:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个)。可以确定特定InetAddressNetworkInterface。您可以在本地主机中查询它,它可以工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InetAddress localhost = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(localhost);

然而,我发现如果我连接到VPN,它会给出一个空的MAC地址。因此,如果您处理的系统可能配置不同,我不完全确定如何可靠地获得所需的MAC。不过,希望这能有所帮助。

一旦您有了正确的MAC地址,您就可以打开URL将其发送到您的服务器,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new URL("http://server?mac=" + mac).openStream().close();
票数 1
EN

Stack Overflow用户

发布于 2011-04-02 19:23:55

您不应该在Java中这样做。Mac地址过滤是防火墙的领域。如果您需要这样做,您可以配置防火墙。这至少可以在Java中完成,这取决于您的防火墙。

在Linux中,配置iptables,多亏了命令行界面,这在Java中很容易实现。

在Windows上,应该有一个易于使用的API来实现这一点。使用JNA访问它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5524264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文