csharp-ip-address-range

Cómo parsear rangos de IP con C# IpaddressRange

IpAddressRange de .NET es una biblioteca Open Source de .NEt que facilita el trabajo con rangos de direcciones IP.

Proporciona funciones para parsear IPs en formato de cadena de texto, admitiendo una gran variedad de formatos.

Una vez definido un objeto rango IP, proporciona operaciones de comparación y de verificación de pertenencia al rango.

La biblioteca es compatible con las versiones IPv4 e IPv6 de las direcciones IP y admite tres formatos diferentes de rango: CIDR, máscara de subred y rango de direcciones IP.

Cómo usar IpAddressRange

Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.

Install-Package IPAddressRange

Aquí tenéis algunos de cómo utilizar IpAddressRange extraídos de la documentación de la librería

using NetTools;
...
// rangeA.Begin is "192.168.0.0", and rangeA.End is "192.168.0.255".
var rangeA = IPAddressRange.Parse("192.168.0.0/255.255.255.0");
rangeA.Contains(IPAddress.Parse("192.168.0.34")); // is True.
rangeA.Contains(IPAddress.Parse("192.168.10.1")); // is False.
rangeA.ToCidrString(); // is 192.168.0.0/24

// rangeB.Begin is "192.168.0.10", and rangeB.End is "192.168.10.20".
var rangeB1 = IPAddressRange.Parse("192.168.0.10 - 192.168.10.20");
rangeB1.Contains(IPAddress.Parse("192.168.3.45")); // is True.
rangeB1.Contains(IPAddress.Parse("192.168.0.9")); // is False.

// IEnumerable<IPAddress> support, it's lazy evaluation.
foreach (var ip in IPAddressRange.Parse("192.168.0.1/23"))
{
    Console.WriteLine(ip);
}

IpAddressRange es Open Source, y todo el código y documentación está disponible en el repositorio del proyecto en https://github.com/jsakamoto/ipaddressrange/