2008-11-22 42 views
13

编写一个类来存储/验证类似192.168.0.0/16的代码很简单,但是我很好奇,如果一个本地类型已经存在于.NET中?我会想象它会工作很像IPAddress是否有CIDR子网的原生.NET类型?

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

基本上它只是需要确保你与IPv4或IPv6地址的工作,然后你指定的位数是有效的那个类型。

回答

3

不,.NET中有这样的本地类型,你需要开发一个你自己。

22

您可以使用代码从CodePlex上做到这一点:

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

输出

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