我目前有这种方法来自其他几个 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 地址的表示似乎不容易转换为字节?
只是想知道是否有人对如何解决这个问题有任何建议。