2011-05-09 33 views

Respuesta

12

Transmite el IP a un entero de 32 bits (IP es de 4 bytes, por lo que también podría representarse como un número entero). Después de comprobar el rango, simplemente verifica si la IP dada (int) se encuentra entre otras dos direcciones IP (otras 2 entradas).

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

Excelente idea. Y para los perezosos, (* grin *) aquí hay una respuesta SO que debería ayudar con eso: http://stackoverflow.com/questions/461742/how-to-convert-an-ipv4-address-into-a-integer -Cª –

0

acabo escribió una pequeña biblioteca IpSet para comprobar si la dirección IP especificada está contenida por un rango predefinido.

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 

Compatible con IPv4 e IPv6. Admite la notación CIDR. El trabajo subyacente es convertir direcciones IP a enteros y compararlos.

Cuestiones relacionadas