【问题标题】:How to get remote machines mac addresses java [duplicate]如何获取远程机器的mac地址java [重复]
【发布时间】:2012-12-27 18:18:09
【问题描述】:

可能重复:
Query ARP cache to get MAC ID

我需要获取连接到我的家庭网络的所有远程计算机的 MAC 地址。我可以使用下面的代码读取我自己机器的mac地址,但我不知道如何获取我网络上其他机器的mac地址。或者有没有可能。

import java.net.InetAddress;
import java.net.NetworkInterface;
class Test {
public static void main(String[] args) throws Exception {
InetAddress address = InetAddress.getLocalHost();

NetworkInterface ni = NetworkInterface.getByInetAddress(address);
byte[] mac = ni.getHardwareAddress();

for (int i = 0; i < mac.length; i++) {
  System.out.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");
}
}
}  

输出(MyComputer 的 6 字节 mac 地址)
30-60-77-12-cd-99

【问题讨论】:

  • 出于什么目的?在 Java 中,除了显示 MAC 地址之外,您没有任何用处。

标签: java ip mac-address


【解决方案1】:

如何获取远程机器的mac地址

你不能这样做——一般情况下不能。 MAC addresses只适用于同一物理网段的机器。这些机器使用ARP 协议直接相互通信,以将IP 地址“转换”为物理(MAC) 地址。

一旦 IP 路由器或任何其他Layer-3 设备被越过,任何 MAC 信息通常都会丢失。

底线:您无法通过 Internet 获取远程节点的 MAC 地址 - 您甚至无法在任何中等规模的专用网络中做到这一点,例如在大多数大中型公司。

【讨论】:

  • 这也是 LAN 唤醒数据包需要来自同一物理网段中的机器的原因。
猜你喜欢
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2018-09-04
  • 1970-01-01
  • 2010-11-08
相关资源
最近更新 更多