不明白 IPNetwork.Contains 结果
Don't understand IPNetwork.Contains result
我正在使用 Microsoft.AspNetCore.HttpOverrides.IPNetwork class 检查 IP 地址是否在子网中,但结果不是我所期望的
void Main()
{
var ipnw = new Microsoft.AspNetCore.HttpOverrides.IPNetwork(
IPAddress.Parse("10.10.10.1"), 30);
// expect these to be true
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.0")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.1")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.2")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.3")));
// expect these to be false
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.4")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.5")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.6")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.7")));
}
我都弄错了,我不明白为什么。我在 https://tehnoblog.org/ip-tools/ip-address-in-cidr-range/ 找到了一个免费的在线网站来检查(糟糕的界面),它显示了我的期望...
我做错了什么?
根据 https://github.com/dotnet/aspnetcore/issues/6674,MS 的 IPNetwork class 包含实现中存在错误。该错误已修复,但尚未发布。在我阅读它时,它希望 CIDR 前缀的地址是来自 CIDR prefix/length.
的第一个地址
这意味着它不喜欢“10.10.10.1/30”,而是想要“10.10.10.0/30”,这确实给出了预期的结果。
我正在使用 Microsoft.AspNetCore.HttpOverrides.IPNetwork class 检查 IP 地址是否在子网中,但结果不是我所期望的
void Main()
{
var ipnw = new Microsoft.AspNetCore.HttpOverrides.IPNetwork(
IPAddress.Parse("10.10.10.1"), 30);
// expect these to be true
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.0")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.1")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.2")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.3")));
// expect these to be false
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.4")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.5")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.6")));
Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.7")));
}
我都弄错了,我不明白为什么。我在 https://tehnoblog.org/ip-tools/ip-address-in-cidr-range/ 找到了一个免费的在线网站来检查(糟糕的界面),它显示了我的期望...
我做错了什么?
根据 https://github.com/dotnet/aspnetcore/issues/6674,MS 的 IPNetwork class 包含实现中存在错误。该错误已修复,但尚未发布。在我阅读它时,它希望 CIDR 前缀的地址是来自 CIDR prefix/length.
的第一个地址这意味着它不喜欢“10.10.10.1/30”,而是想要“10.10.10.0/30”,这确实给出了预期的结果。