计算ip范围

时间:2013-04-10 09:04:37

标签: c# ip-address subnet addrange

如果你可以这么说的话,我遇到了一个轻微的“问题”。我试图学习子网并制作子网计算器。一切正常,但是当你得到像255.255.0.0这样的网络掩码时会出现问题,这会给你一个可能的~65k的地址。

我以编程方式检索我的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 - &gt; 255.并且对于那些另外的每个0 - > 255。

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

我首先考虑的是addrange,因为在第三个八位字节中我想要在0到255之间添加0-255,所以我可以制作另一个列表,其中包含第四个八位字节范围的一个副本和foreach数字第三个八位字节添加我的第四个八位字节列表。但是这会给我一个看起来像10.23.0的项目列表 - &gt;这些项目中的每一项都有0-> 255作为子项目?

0 个答案:

没有答案