2013-07-29 110 views
4

我具有被“自”和形成“到”C#的IP范围控制

从一个IP范围:127.0.0.1到:127.0.0.255等

如何可以控制sended叶这是127.0.1.253?它在IP范围内吗?

+1

请问您的IP地址范围已经被存储为“从'和'到'?您是否可以将其存储为网络地址,例如127.0.0.0/24?这有助于更好地进行范围检查。 –

+0

看看这个http://stackoverflow.com/questions/1614003/restricting-an-ip-if-it-is-between-an-ip-range –

回答

8

Convert the IPs to an integer,并检查它是否在范围内。

  • 127.0.0.1 = 2130706433
  • 127.0.0.255 = 2130706687

  • 127.0.1.253 = 2130706941

因此它不适合的范围内。


public static long IP2Long(string ip) 
    { 
     string[] ipBytes; 
     double num = 0; 
     if(!string.IsNullOrEmpty(ip)) 
     { 
      ipBytes = ip.Split('.'); 
      for (int i = ipBytes.Length - 1; i >= 0; i--) 
      { 
       num += ((int.Parse(ipBytes[i]) % 256) * Math.Pow(256, (3 - i))); 
      } 
     } 
     return (long)num; 
    } 

来源:http://geekswithblogs.net/rgupta/archive/2009/04/29/convert-ip-to-long-and-vice-versa-c.aspx


因此,使用这种方法,你可以这样做:

long start = IP2Long("127.0.0.1"); 
long end = IP2Long("127.0.0.255"); 
long ipAddress = IP2Long("127.0.1.253"); 

bool inRange = (ipAddress >= start && ipAddress <= end); 

if (inRange){ 
    //IP Address fits within range! 
}