是否有人有一些代码可以确定 IP 地址(IPv4 或 IPv6)是否与运行应用程序的机器位于同一子网上?我已经看到了许多使用 IPv4 执行此操作的代码示例,但我找不到任何支持 IPv6 的代码示例。
编辑:
我不确定我是否理解 v4 和 v6 之间的所有差异,所以我的问题还有一点。我有一个同时服务于 Internet 客户端和 Intranet 客户端的应用程序,也就是说,有一些客户端与服务器位于同一物理网络上。所以有时客户端之间有路由器,有时没有。使用 IPv4,我可以通过检查客户端 IP 地址与服务器 IP 地址和子网来确定这一点,因此如果我的服务器的 IP 和子网掩码分别是:
192.168.123.15 255.255.255.0
服务器收到来自 192.168.123.100 的客户端请求,我知道客户端和服务器之间没有路由器。但是,如果服务器收到来自 192.168.1.100 或 67.7.23.4 的客户端请求,我知道在这些客户端和服务器之间有一个路由器。在 .Net 中,我可以收集客户端和服务器 IP 地址(v4 和 v6),但找不到 IPv6 子网掩码。
有没有办法在 .Net 中收集这些信息,或者我误解的 IPv4 和 IPv6 之间有什么区别?
编辑 x2:
我在 MS 连接站点上发布了这个,看看他们是否正在处理它,或者是否有原因他们没有向 UnicastIPAddressInformation 类添加 IPv6Mask 属性。
大约在同一时间,我还在 MSDN 论坛上发布了相同的问题。1800+ 次浏览,没有一个回复。我想我不是唯一对此感到好奇的人。