我正在使用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,这也需要考虑。
答案 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
玩得开心!