Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算ip范围_C#_Ip Address_Subnet_Addrange - Fatal编程技术网

C# 计算ip范围

C# 计算ip范围,c#,ip-address,subnet,addrange,C#,Ip Address,Subnet,Addrange,如果可以这么说的话,我遇到了一个小小的“问题”。我正在尝试学习子网并制作子网计算器。一切正常,但当您获得255.255.0.0之类的网络掩码时,问题就出现了,该掩码可能会为您提供约65k的地址 我通过编程检索我的IP和网络掩码,并从中计算出第一个和最后一个可能的IP地址。在那之后,我把它们分成两个单独的列表。在此之后,我使用两个for循环,如下所示: //Third octet else if (firstIpList[2].ToString() != lastI

如果可以这么说的话,我遇到了一个小小的“问题”。我正在尝试学习子网并制作子网计算器。一切正常,但当您获得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());
                }
            }
        }
//第三个八位组
else if(firstIpList[2].ToString()!=lastIpList[2].ToString())
{
对于(int i=Convert.ToInt32(firstIpList[2]);i
这只是检查列表中的第三个条目,即第三个八位组,第四个八位组由于地址数量少而要求不高,而第二个八位组要求更高,因此我以第三个八位组为例

这个循环的作用是10.23.0->255。每一个都是0->255

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


我最初考虑的是addrange,因为对于第三个八位组中的0-255,我也想在第四个八位组中添加0-255,所以我可以制作另一个列表,其中包含第四个八位组范围的一个副本和第三个八位组中的每个数字addrange我的第四个八位组列表。但这会给我留下一个类似于10.23.0->255的项目列表,每个项目都有0->255作为子项目,对吗?

处理IP(v4)要容易得多地址和掩码为32位整数。是的,可能是,但我真的不知道如何做所有的计算,以找到ip地址和掩码,在当时,这是我能想到的唯一解决方案,没有优化,甚至可能是很好的,但它是我能想出的。至少到目前为止它是有效的:p。