gpt4 book ai didi

c# - 比较 ipv6 表示法中的 ipv4 地址

转载 作者:行者123 更新时间:2023-11-30 17:05:21 36 4
gpt4 key购买 nike

在通过 ipv4 传入的连接上,IPAddress 采用 ipv6 表示法,例如 ::ffff:1.2.3.4

我想将这些地址与我从其他地方以 ipv4 表示法获得的 IPAddress 进行比较:1.2.3.4

我的意思是 ipv4.GetAddressBytes() 返回 4 个字节,而 ipv6.GetAddressBytes() 返回 16 个字节。

有没有简单的方法将 ipv4 IPAddress 转换为 ipv6 表示法?

我想我知道如何逐字节执行,但我可能会遗漏一些东西,如果有的话,我宁愿使用现有的函数。

最佳答案

将您的 IP 地址实例化为 System.Net.IPAddress 的实例。看下面的方法:

  • IPAddress.Equals()
  • IPAddress.MapToIPv4()
  • IPAddress.MapToIPv6()

您可能希望为特殊地址添加特殊处理(例如 TCP/IP 环回适配器:这是单个 IPv6 地址,::1,而对于 IPv4,即使为此目的最常用的地址是 127.0.0.1,IETF 保留了整个 127/8 block (127.0.0.0127.255.255.255(含)用于此目的。如何确定相等性(甚至等效性)是有争议的。

由于 IPv4 和 IPv6 是完全不同且独立的寻址方案,有人可能会合理地争辩说,确定等效性的唯一真实方法是它们是否都映射到同一端点(MAC 地址/网络适配器)。

关于c# - 比较 ipv6 表示法中的 ipv4 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618810/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com