通过 IPv6 获取远程 MAC 地址
是否可以通过 IPv6(无 WMI)从同一网络中的另一台 PC 获取 MAC?使用 IPv4 就很容易 (ARP)。
IPv6 使用“邻居发现协议”(NDP) 来获取 MAC 地址。 .Net中有任何方法可以实现这一点吗?
Is it possible to get the MAC from an another PC in the same Network via IPv6 (without WMI)? With IPv4 it is easy (ARP).
IPv6 uses the "Neighbor Discovery Protocol" (NDP) to get the MAC address. Are there any methods in .Net for this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你可以运行外部命令“netsh int ipv6 show neigh”,过滤掉你感兴趣的主机。你应该在这之前联系过它,所以你知道它在NC中。
如果您需要 API,请使用 GetIpNetTable2< /a> 或者,更直接地,ResolveIpNetEntry2 。我怀疑是否有 .NET API 可以实现此目的,因此您必须使用 PInvoke。
You can run the external command "netsh int ipv6 show neigh", and filter out the host you are interested in. You should have contacted it just before that, so you know it is in the NC.
If you want an API for that, use GetIpNetTable2 or, more directly, ResolveIpNetEntry2. I doubt there is a .NET API for this, so you'll have to use PInvoke.
Martin 的答案是针对 Windows 的,但这是针对 GNU/Linux 或其他 *nix 机器的。
您想使用
ip
命令的neigh
功能来显示 IPv6 邻居,如下所示:(专业提示:您可以保留
-6
关闭并在同一列表中查看 IPv4 ARP 以及 IPv6 ND。)此外,如果您想查找 LAN 上所有 IPv6 计算机的 MAC 地址,而不仅仅是< /em> 那些你已经知道的,你应该先 ping 他们,然后寻找邻居:
Martin's answer was for Windows, but this is for if you are on a GNU/Linux or other *nix box.
You want to use the
neigh
function of theip
command to show IPv6 neighbours, like so:(Pro tip: you can leave the
-6
off and view IPv4 ARP as well as IPv6 ND in the same list.)Also, if you want to find out the MAC addresses of all the IPv6 machines on the LAN, and not just those you already know about, you should ping them first, then look for neighbours:
如果改进行解析代码,@Alex 的答案会更好。这是一种方法:
The answer by @Alex would be better if the line parsing code were improved. Here is one way:
这是我的代码:
Here is my code: