给定2个IP地址,如何获得所有可能的IP地址?

时间:2016-10-28 10:29:07

标签: c#

我遇到与this问题相同的问题,但我的语言是C#(所以没有toHexString方法)。所以,我的问题是我有这两个IP:

String start = "192.168.0.2"
String end = "192.168.0.254"

我希望最终得到一个包含以下内容的列表:

192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
...
192.168.0.254

我的第一个解决方案是循环遍历每个字节的所有可能IP。所以

   var startIpArray = start.Split('.');
   var endIpArray = end.Split('.');
   if (startIpArray [3] != endIpArray[3])
        {
            for (var i = startIpArray [3]; i < endIpArray[3] ; i++)
            {
                listOfIps.Add($"{startIpArray[0]}.{startIpArray[1]}.{startIpArray[2]}.{i}");
            }
        }

对每个组重复一遍,每个数字的循环次数越来越多。我的解决方案太可怕了。有没有更好的办法?我所拥有的范围从来没有大到足以让我耗尽内存制作巨型名单,所以不用担心。

1 个答案:

答案 0 :(得分:1)

使用IPAddressRange库,您可以枚举您的IP:

var start = IPAddress.Parse("192.168.0.2");
var end = IPAddress.Parse("192.168.0.254");

var range = new IPAddressRange(start, end);

foreach (var ip in range)
{
    Console.WriteLine(ip);
}