Ответ 1
В .NET нет такого родного типа, вам нужно будет разработать свой собственный.
Это достаточно просто, чтобы закодировать класс для хранения/проверки чего-то вроде 192.168.0.0/16
, но мне было любопытно, если для этого уже существует родной тип для .NET? Я бы предположил, что это будет очень похоже на IPAddress
:
CIDR subnet = CIDR.Parse("192.168.0.0/16");
В принципе, вам просто нужно убедиться, что вы работаете с IPv4 или IPv6-адресом, а затем количество битов, которое вы укажете для этого типа.
В .NET нет такого родного типа, вам нужно будет разработать свой собственный.
Вы можете использовать код из 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