Loading

计算连续的IP地址

题目:要求计算连续的IP地址。

举例:起始IP为192.168.2.2,IP总个数为3,那么要求得的所有IP的为192.168.2.2,192.168.2.3,192.168.2.4。再举个例子,起始IP为192.168.2.253,IP总个数为5那么要求得的所有IP为192.168.2.253,192.168.2.254,192.168.2.255,192.168.3.0,192.168.3.1。

按照传统的解法可以这么做:

static void Main(string[] args)  
{  
    string ip = "192.168.2.253";//起始IP  
    int count = 5;//要计算连续IP的个数  
  
    var ipValue = BitConverter.ToUInt32(IPAddress.Parse(ip).GetAddressBytes().Reverse().ToArray(), 0);  
  
    for (uint i = 0; i < count; i++)  
    {  
        IPAddress newIp = IPAddress.Parse((ipValue + i).ToString());  
        Console.WriteLine(newIp);  
    }  
}  

 那如果我们用linq稍微改造一下,可以这么干:

static void Main(string[] args)  
{  
    string ip = "192.168.2.253";//起始IP  
    int count = 5;//要计算连续IP的个数  
  
    var ipValue = BitConverter.ToUInt32(IPAddress.Parse(ip).GetAddressBytes().Reverse().ToArray(), 0);  
  
    var newIps = from p in Enumerable.Range(0, count)  
                 let newIp = ipValue + p  
                 select new { IP = IPAddress.Parse(newIp.ToString()) };  
  
    foreach (var newIp in newIps)  
    {  
        Console.WriteLine(newIp.IP);  
    }  
}  

答案:

192.168.2.253

192.168.2.254

192.168.2.255

192.168.3.0

192.168.3.1

 

 

 

posted @ 2014-01-06 22:20  guwei4037  阅读(443)  评论(0编辑  收藏  举报