2011-05-09 78 views

回答

12

将IP转换为32位整数(IP为4个字节,因此也可以表示为整数)。 检查范围只是检查给定的IP(int)是否在两个其他IP(其他两个int)之间。

if(low_range <= checked_ip <= high_range){ TRUE! } 
+0

好主意。而对于懒惰的,(*笑脸*)这里是一个SO的答案,应该有所帮助:http://stackoverflow.com/questions/461742/how-to-convert-an-ipv4-address-into-a-integer -in-C – 2012-09-07 17:49:11

0

我只是写了一个小图书馆IpSet检查,如果指定的IP地址是由一个预先定义的范围包含。

var set = IpSet.ParseOrDefault("192.168.0.*,10.10.1.0/24,192.168.1.1-192.168.2.30"); 
var result = set.Contains("192.168.1.150"); // true 

支持IPv4和IPv6。 支持CIDR表示法。 基础工作是将IP地址转换为整数并进行比较。