c# - 如何在LAN上查找所有IPV6 IP地址

时间:2016-04-08 19:42:11

标签: c# networking ipv6 discovery

还是习惯了这个,但是那些知道检索IPV6网络上所有IP地址的最佳方法的人呢?

1 个答案:

答案 0 :(得分:2)

在特定接口上Ping ff02::1是一种让该接口上的所有节点都能回复ping的方法。当然,每个节点都要确定它们是否确实做出了回复。

ff02prefix for the link-local multicast scope,而::1是"所有节点"目的地。实际上,您可能还需要添加接口号,例如接口号为ff02::1%3。这是因为您必须指定发送ping的接口。

我不知道如何在C#中执行此操作,也不能让它在Windows 10 cmd.exe上运行,ping只会说没有回复。但是在我的OS X笔记本电脑上,它可以工作:

:; ping6 ff02::1%en0
PING6(56=40+8+8 bytes) fe80::xxxx:xxxx:xxxx:xxxx%en0 --> ff02::1%en0
16 bytes from fe80::xxxx:xxxx:xxxx:xxxx%en0, icmp_seq=0 hlim=64 time=0.089 ms
16 bytes from fe80::yyyy:yyyy:yyyy:yyyy%en0, icmp_seq=0 hlim=64 time=2.160 ms
16 bytes from fe80::zzzz:zzzz:zzzz:zzzz%en0, icmp_seq=0 hlim=64 time=2.238 ms

如果您希望连接到在LAN中其他节点上运行的自己的程序,则应该为此目的设置特定的多播地址,或者将ff02 :: 1与特定的udp端口一起使用。这在IPv4和IPv6上大致相同。

编辑:刚刚注意到,至少默认情况下,Windows 10也不会回答这些ping。