1

我目前有这种方法来自其他几个 SO 帖子:

public bool IsIPAddressInRange(IPAddress ipAddress)
{
    int startIntAddress = BitConverter.ToInt32(StartingIPAddress.GetAddressBytes(), 0);
    int endIntAddress = BitConverter.ToInt32(EndingIPAddress.GetAddressBytes(), 0);

    int intIpAddress = BitConverter.ToInt32(ipAddress.GetAddressBytes(), 0);

    return startIntAddress <= intIpAddress && intIpAddress <= endIntAddress;
}

尝试扩展此逻辑以支持 IPv6 显然存在一些缺陷。即:

  • 我是否需要使用 BigInt 而不是 Int32 来支持更长的字段长度?
  • IPv6 地址的表示似乎不容易转换为字节?

只是想知道是否有人对如何解决这个问题有任何建议。

4

0 回答 0