查找第一个IP和最后一个IP之间的所有IP



我正在使用IPNetwork C#库来查找第一个和最后一个可用的IP地址。我想要实现的是打印或存储在列表中第一个和最后一个可用IP之间的所有IP地址范围。我正在使用以下内容查找第一个和最后一个可用的IP。

    IPNetwork ipnetwork = IPNetwork.Parse("192.168.1.1/24");
    string first = ipnetwork.FirstUsable.ToString();
    string last = ipnetwork.LastUsable.ToString();

如果我通过一个大于或等于24的网络掩码,打印所有范围是非常简单的,因为在/24的最大值下,我们有256个IP地址,254个可用于主机,一个简单的循环将生成所有范围,因为只有第四个八位位组将被更改。然而,如果我传递的网络掩码小于\24示例\23,那么第三个八位位组也需要更改,一个简单的循环无法完成任务,需要找到另一个解决方案。此外,传递给IPNetwork.Passe的参数可能不需要192.168.1.1或10.0.2.1,而是分别需要192.168.1.130或10.0.2.200,这也是需要考虑的问题。

示例8:

IPNetwork net = IPNetwork.Parse("192.168.0.1/23");
IPNetwork ips= IPNetwork.Subnet(net , 32);
Console.WriteLine("{0} was subnetted into /{1} ips", net ,     ips.Count);
Console.WriteLine("First: {0}", subneted[0]);
Console.WriteLine("Last : {0}", subneted[subneted.Count - 1]);
Console.WriteLine("All  :");
foreach (IPNetwork ipnetwork in ips)
{
    Console.WriteLine("{0}", ipnetwork);
}

输出

192.168.0.1/23 was subnetted into /32 subnets
First: 192.168.0.0/32
Last : 192.168.1.254/32
All  :
192.168.0.0
192.168.0.1
...
192.168.1.254

玩得开心!

最新更新