【问题标题】:How do you get the ethernet address using Java?如何使用 Java 获取以太网地址?
【发布时间】:2010-09-07 05:33:24
【问题描述】:

我想检索用于访问特定网站的网络接口的以太网地址。

如何在 Java 中做到这一点?

解决方案请注意,getHardwareAddress 的公认解决方案仅在 Java 6 中可用。除了执行 i(f|p)confing 之外,似乎没有适用于 Java 5 的解决方案。

【问题讨论】:

    标签: java networking ethernet


    【解决方案1】:

    java.net.NetworkInterface.getHardwareAddress(Java 6 中添加的方法)

    它必须在您感兴趣的机器上调用 - MAC 不会跨网络边界(即 LAN 和 WAN)传输。如果您想在网站服务器上使用它来询问客户端,则必须运行一个将结果报告给您的小程序。

    对于 Java 5 及更早版本,我找到了代码 parsing output of command line tools on various systems

    【讨论】:

    • 我认为比“跨网络边界”更正确的是“跨网段”
    【解决方案2】:

    您可以使用http://java.sun.com/javase/6/docs/api/java/net/NetworkInterface.html#getInetAddresses()获取连接到您的ServerSocket的地址

    但是,如果您的客户端通过 NAT 连接,那么您将获得路由器的地址,而不是以太网地址。如果它在您的本地网络上(通过集线器/交换机,没有带 NAT 的路由器),它将按预期工作。

    【讨论】:

      【解决方案3】:

      实际上,除了其他正确答案(JDK 6; exec 'ifconfig')之外,还有基于 JNI 的库。 Java Uuid Generator (JUG) 2.0 有一些平台的代码。这至少适用于 JDK 1.2 及更高版本(甚至可能是 1.1)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 2012-09-29
        • 2016-09-01
        • 2011-06-26
        • 2022-10-12
        • 1970-01-01
        相关资源
        最近更新 更多