【问题标题】:Convert IP range to range of CIDR addresses c#将IP范围转换为CIDR地址范围c#
【发布时间】:2016-02-16 12:57:35
【问题描述】:

我有以下问题:我需要将IP 地址范围转换为CIDR 地址范围而不会丢失地址。例如, 如果我有1.1.1.3 - 1.1.1.7 的范围,我可以将其转换为

 1.1.1.1/29

使用IPNetwork 库,但如果我会转换 1.1.1.1/29 再次进行范围我得到1.1.1.1 - 1.1.1.6。 我如何划分范围以获得CIDR 格式的几个范围而不损失? 如果你能告诉我任何C# 代码来执行它,那就太好了。

【问题讨论】:

标签: c# ip cidr


【解决方案1】:

使用 IPNetwork2 nuget 包,您可以将子网划分为 /32 并遍历结果 ips :

文档示例 8:

IPNetwork wholeInternet = IPNetwork.Parse("1.1.1.1/29");
IPNetwork ips = IPNetwork.Subnet(wholeInternet, 32);

Console.WriteLine("All  :");

foreach (IPNetwork ip in ips)
{
    Console.WriteLine("{0}", ip);
}

输出

All  :
1.1.1.0
1.1.1.1
1.1.1.2
1.1.1.3
1.1.1.4
1.1.1.5
1.1.1.6
1.1.1.7

【讨论】: