2008-11-22 10 views
13

Es bastante simple codificar una clase para almacenar/validar algo como 192.168.0.0/16, pero tenía curiosidad si ya existía un tipo nativo para esto en .NET? Me imagino que funcionaría mucho a IPAddress:¿Hay un tipo .NET nativo para las subredes CIDR?

CIDR subnet = CIDR.Parse("192.168.0.0/16"); 

Básicamente sólo tiene que asegurarse de que está trabajando con una dirección IPv4 o IPv6 y después de que el número de bits que especifica el es válido para ese tipo.

Respuesta

3

No existe ese tipo nativo en .NET, tendrá que desarrollar uno usted mismo.

22

Puede utilizar el código de CodePlex para hacer precisamente eso:

http://ipnetwork.codeplex.com/

IPNetwork ipnetwork = IPNetwork.Parse("192.168.168.100/24"); 

Console.WriteLine("Network : {0}", ipnetwork.Network); 
Console.WriteLine("Netmask : {0}", ipnetwork.Netmask); 
Console.WriteLine("Broadcast : {0}", ipnetwork.Broadcast); 
Console.WriteLine("FirstUsable : {0}", ipnetwork.FirstUsable); 
Console.WriteLine("LastUsable : {0}", ipnetwork.LastUsable); 
Console.WriteLine("Usable : {0}", ipnetwork.Usable); 
Console.WriteLine("Cidr : {0}", ipnetwork.Cidr); 

salida

Network : 192.168.168.0 
Netmask : 255.255.255.0 
Broadcast : 192.168.168.255 
FirstUsable : 192.168.168.1 
LastUsable : 192.168.168.254 
Usable : 254 
Cidr : 24 
Cuestiones relacionadas