循环ip段 转载 出处不明

public  struct  IP
         {
             public  byte  A;
             public  byte  B;
             public  byte  C;
             public  byte  D;
 
             public  IP( byte [] ba)
             {
                 A = ba[0];
                 B = ba[1];
                 C = ba[2];
                 D = ba[3];
             }
         }
 
         public  static  void  IPSection(IPAddress ip1, IPAddress ip2)
         {
             IP x =  new  IP(ip1.GetAddressBytes());
             IP y =  new  IP(ip2.GetAddressBytes());
 
             byte  secStart = 1;       //这里可以改为0
             byte  secEnd = 254;       //这里可以改为255
 
             for  ( byte  a = x.A; a <= y.A; a++)
             {
                 byte  bStart = (a == x.A ? x.B : secStart);
                 byte  bEnd = (a == y.A ? y.B : secEnd);
 
                 for  ( byte  b = bStart; b <= bEnd; b++)
                 {
                     byte  cStart = (a == x.A && b == x.B) ? x.C : secStart;
                     byte  cEnd = (a == y.A && b == y.B) ? y.C : secEnd;
 
                     for  ( byte  c = cStart; c <= cEnd; c++)
                     {
                         byte  dStart = (a == x.A && b == x.B && c == x.C) ? x.D : secStart;
                         byte  dEnd = (a == y.A && b == y.B && c == y.C) ? y.D : secEnd;
 
                         for  ( byte  d = dStart; d <= dEnd; d++)
                         {
                             OutputIpAddress(a, b, c, d);
                         }
                         //这个是测试用的,只输出这一网段最后一位的起止位置,不输出全部。
                         //Output("========输出网段========");
                         //OutputIpAddress(a, b, c, dStart);
                         //OutputIpAddress(a, b, c, dEnd);
                     }
                 }
             }
         }


========================
 
 
  string  ipStr1 =  "1.1.1.1" ;
             string  ipStr2 =  "1.1.2.2" ;
             string [] ipArray1 = ipStr1.Split( new  char [] {  '.'  });
             
             string [] ipArray2 = ipStr2.Split( new  char [] {  '.'  });
 
             long  ipStart = 256 * 256 * 256 *  long .Parse(ipArray1[0]) + 256 * 256 *  long .Parse(ipArray1[1]) + 256 *  long .Parse(ipArray1[2]) +  long .Parse(ipArray1[3]);
             long  ipEnd = 256 * 256 * 256 *  long .Parse(ipArray2[0]) + 256 * 256 *  long .Parse(ipArray2[1]) + 256 *  long .Parse(ipArray2[2]) +  long .Parse(ipArray2[3]);
 
             List< string > SearchIPArray =  new  List< string >(); //存放你的中间IP
 
             for  ( long  i = ipStart; i <= ipEnd; i++)
             {
                 long  tmp = i;
                 long  a = tmp / (256 * 256 * 256);
                 tmp -= a * (256 * 256 * 256);
                 long  b = tmp / (256 * 256);
                 tmp -= b * 256 * 256;
                 long  c = tmp / 256;
                 tmp -= c * 256;
                 long  d = tmp;
                 SearchIPArray.Add(a.ToString() +  "."  + b.ToString() +  "."  + c.ToString() +  "."  + d.ToString());                
             }

转载于:https://www.cnblogs.com/zcm123/p/4272833.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值