2008-11-22 13 views
13

Il est assez simple de coder une classe pour stocker/valider quelque chose comme 192.168.0.0/16, mais j'étais curieux de savoir si un type natif pour cela existait déjà dans .NET? J'imagine que cela fonctionnerait un peu comme IPAddress:Existe-t-il un type .NET natif pour les sous-réseaux CIDR?

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

Fondamentalement, il a juste besoin de vous assurer que vous travaillez avec une adresse IPv4 ou IPv6, puis que le nombre de bits est valide votre spécification pour ce type.

Répondre

3

Non, il y a un tel type natif dans .NET, vous devrez développer votre auto.

22

Vous pouvez utiliser le code de CodePlex pour faire exactement cela:

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); 

Sortie

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