2

如果你可以这样称呼它,我遇到了一个轻微的“问题”。我正在尝试学习子网并制作子网计算器。一切正常,但是当您获得像 255.255.0.0 这样的网络掩码时,问题就出现了,它为您提供了可能的 ~65k ish 地址。

我以编程方式检索我的 IP 和网络掩码,并从中计算出第一个和最后一个可能的 IP 地址。之后,我将它们分成两个单独的列表。在此之后,我使用两个这样的 for 循环:

        //Third octet
        else if (firstIpList[2].ToString() != lastIpList[2].ToString())
        {
            for (int i = Convert.ToInt32(firstIpList[2]); i < Convert.ToInt32(lastIpList[2]); i++)
            {
                for (int x = Convert.ToInt32(firstIpList[3]); x < Convert.ToInt32(lastIpList[3]); x++)
                {
                    ipRange.Add(firstIpList[0].ToString() + "." + firstIpList[1].ToString() + "." + i.ToString() + "." + x.ToString());
                }
            }
        }

这只是检查列表中的第三个条目,即第三个八位位组,由于地址数量少,第四个八位位组的要求并不高,而第二个要求更高的则不太常见,因此我以第三个为例。

这样做是循环让我们说 10.23.0 -> 255。对于每一个,另一个 0 -> 255。

是的,我有广播和 ID,但这不是重点,重点是这是一个运行 65025 次的循环,您可能猜到这非常耗时。有没有办法让这更有效?

我一开始在考虑 addrange,因为第三个八位字节中的 0-255 我也想在第四个中添加 0-255,所以我可以制作另一个列表,其中包含第四个八位位组范围的副本和第三个八位位组中的 foreach 数字添加我的第四个八位字节列表。但这会给我留下一个看起来像 10.23.0 -> 255 的项目列表,并且每个项目都有 0->255 作为子项目,对吗?

4

0 回答 0