CIDR子网是否有本机.NET类型?

时间:2008-11-22 00:06:57

标签: c# .net ip-address subnet cidr

编写一个类来存储/验证类似192.168.0.0/16之类的东西很简单,但我很好奇.NET中是否存在本机类型?我想它会像IPAddress

那样工作
CIDR subnet = CIDR.Parse("192.168.0.0/16");

基本上,它只需要确保您使用IPv4或IPv6地址,然后确定您指定的位数对该类型有效。

3 个答案:

答案 0 :(得分:25)

您可以使用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

答案 1 :(得分:4)

在.NET中没有这样的原生类型,你需要自己开发一个。

答案 2 :(得分:0)

对于ASP.NET Core,现在有IPNetwork类。下面是示例用法:

var addr = IPAddress.Parse("192.168.0.0");
var mask = 16;
var test = new IPNetwork(addr, mask).Contains(context.Connection.RemoteIpAddress);