2014-03-29 392 views
3

我正在写一个Java应用程序必须能够打开(WOL这是工作正常),并关闭本地网络上的电脑。事情是我希望它能够在只提供MAC地址的同时做到这一点。我需要的是一种通过仅提供其MAC地址来获取pc(如果通电)的ip地址的方式。我看到很多关于做相反事情的线索,但这似乎是一个死胡同。获取IP地址的mac地址

预先感谢 Krolden

+1

我不知道你可以从纯Java执行反向ARP。也许你可以使用[SNMP4J](http://www.snmp4j.org/),但我从来没有尝试过。 –

回答

2

这是不可能在一般情况下; IP地址和MAC地址具有多对多的关系(大多数接口有多个IP地址,一个IP地址可以绑定到多个MAC,但后者通常处于负载平衡的情况下)。

InARP协议在帧中继上可用,但不适用于以太网。

由于多种原因,您可以得到最接近的 - 这是不可靠的 - 是在给予唤醒时间之后,广播ping目标计算机所在的子网。然后您可以检查本地计算机上的ARP缓存以查找匹配的条目。

+0

+1,我会补充说,使用MAC地址作为计算机标识符本身充满了问题。它可以在NIC更改时更改,也可以由用户更改。 – EJP

+0

@EJP当涉及WOL时,不可避免。 – chrylis