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

时间:2016-07-21 13:17:26

标签: c# .net network-programming 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.Parse的参数可能也不是必需的192.168.1.1或10.0.2.1,而是192.168.1.130或10.0.2.200,这也需要考虑。

1 个答案:

答案 0 :(得分:1)

例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

玩得开心!