Java - 按MAC地址查找主机

use*_*995 6 java android network-programming

我有一个需要将一些数据发送到本地网络服务器的Java/Android应用程序.问题是服务器的IP地址是动态的,所以找到它的唯一方法是通过它的MAC地址查找.这在Java中可行吗?你能看到其他选择吗?

Ste*_*n C 0

这在Java中可能吗?

不是纯Java。

没有直接将 MAC 地址映射到 IP 地址的服务。主计算机操作系统的网络堆栈使用 ARP 协议和(在 Linux/UNIX 上)ARP 守护程序将 IP 地址映射到 MAC 地址。AFAIK,不可能从 Java 使用 ARP 协议。

你能做的最好的事情(在 Linux 上)就是运行“arpd -l”作为外部命令。这将以您的 Java 应用程序可以读取和解析的明确定义的格式转储守护程序的 ARP 映射。如果您的服务器在本地网络上处于活动状态,则其 MAC 地址将与相应的 IP 地址一起显示。但如果它不在本地网络上,那么它的 ARP 广播将不会到达您的计算机,因此守护进程的表中不会有条目。


最好为您的服务器分配一个静态 IP 地址……和一个 DNS 地址。另一种可能性是让服务器使用动态 DNS服务自行注册。