我们正在编写一项功能,允许管理员阻止/允许 IP 地址范围。
用 C# 可以很容易做到这一点吗?
我正在考虑查看每个数字[这里].[这里].[这里].[这里],然后用范围进行数学计算,看看每个数字是否在两者之间?
这适用于标准 ip v4 地址吗?
最佳答案
我会将它们转换为整数,然后比较整数。但什么是正确的取决于您如何定义范围。
UInt32 Ip4ToInt(string ip)
{
UInt32[] parts=ip.Split('.').Select(s=>UInt32.Parse(s)).ToArray();
if (parts.Length != 4)
throw new ArgumentException("InvalidIP");
return (parts[0]<<24) | (parts[1]<<16) | (parts[2]<<8) | parts[3];
}
例如,1.1.1.99
应该属于 1.1.1.1 - 1.1.2.2
范围吗?当比较每个组时它不是,当比较整数时它是。
关于c# - 使用 C# 检查 IP 地址与一系列值的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4438531/