问题
It's simple enough to code up a class to store/validate something like 192.168.0.0/16
, but I was curious if a native type for this already existed in .NET? I would imagine it would work a lot like IPAddress
:
CIDR subnet = CIDR.Parse("192.168.0.0/16");
Basically it just needs to make sure you're working with an IPv4 or IPv6 address and then that the number of bits your specifying is valid for that type.
回答1:
No there is such native type in .NET, you will need to develop one your self.
回答2:
You can use the code from CodePlex to do just that:
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);
Output
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
来源:https://stackoverflow.com/questions/310599/is-there-native-net-type-for-cidr-subnets