【问题标题】:Find all the IP between the a first IP and a last IP查找第一个 IP 和最后一个 IP 之间的所有 IP
【发布时间】:2016-11-25 02:42:29
【问题描述】:

我正在使用 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,这也是需要考虑的。

【问题讨论】:

标签: c# .net network-programming ip


【解决方案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

玩得开心!

【讨论】:

    猜你喜欢
    • 2013-12-19
    • 2016-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多