【问题标题】:Given 2 IP addresses, how do I get all possible IP addresses? [duplicate]给定 2 个 IP 地址,我如何获得所有可能的 IP 地址? [复制]
【发布时间】:2016-10-28 10:29:07
【问题描述】:

我和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}");
            }
        }

然后对每个组重复此操作,每个数字的 for 循环越来越多。我的解决方案很糟糕。有没有更好的办法?我拥有的范围永远不会大到足以让我用完内存来制作巨大的列表,所以不要担心。

【问题讨论】:

标签: c#


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

【讨论】:

  • 谢谢,但我不想使用外部库。
  • @ohyeah 好的。然后您可以查看有关 vivek nuna 链接的问题的答案。
猜你喜欢
  • 2020-10-13
  • 2018-10-08
  • 2014-10-21
  • 2014-12-31
  • 2022-01-21
  • 2016-04-09
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多