查找第一个IP和最后一个IP之间的所有IP
本文关键字:IP 之间 最后一个 第一个 查找 | 更新日期: 2023-09-27 17:58:07
我正在使用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
玩得开心!