如何使用 Java 获取以太网地址?

2022-09-02 04:05:17

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

如何在Java中完成此操作?

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


答案 1

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

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

对于Java 5及更早版本,我发现各种系统上命令行工具的代码解析输出


答案 2

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

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


推荐