我希望能够获取用于访问特定网站的网络接口的以太网地址。
这在Java中该如何实现呢?
解决方案请注意,getHardwareAddress
方法只适用于Java 6及以上版本。在Java 5中似乎没有其他解决方案,除非执行i(f|p)confing命令。
我希望能够获取用于访问特定网站的网络接口的以太网地址。
这在Java中该如何实现呢?
解决方案请注意,getHardwareAddress
方法只适用于Java 6及以上版本。在Java 5中似乎没有其他解决方案,除非执行i(f|p)confing命令。
java.net.NetworkInterface.getHardwareAddress(Java 6中添加的方法)
此方法必须在您感兴趣的计算机上调用 - MAC地址不会跨越网络边界传输(即LAN和WAN)。如果您想在网站服务器上使用它来查询客户端,您需要运行一个应用程序,该应用程序将向您报告结果。
对于Java 5及更早版本,我找到了一个解析不同系统命令行工具输出的代码。
但是,如果您的客户端通过NAT连接,则会获取路由器的地址而不是以太网地址。如果它在您的本地网络上(通过集线器/交换机,没有带有NAT的路由器),则将按预期工作。
实际上,除了其他正确的答案(JDK 6;exec 'ifconfig'),还有基于JNI的库。 Java Uuid Generator (JUG) 2.0 在某些平台上有相关代码。这至少可以在JDK 1.2及以上版本上运行(甚至可能是1.1)。