编写一个类来存储/验证像192.168.0.0/16这样的东西是很简单的,但是我很好奇.NET中是否已经存在这样的原生类型?我想它会像IPAddress一样工作:
192.168.0.0/16
IPAddress
CIDR subnet = CIDR.Parse("192.168.0.0/16");
字符串基本上,它只需要确保您正在使用IPv4或IPv6地址,然后您指定的位数对该类型有效。
2j4z5cfb1#
你可以使用GitHub上的代码来做到这一点:https://github.com/lduchosal/ipnetwork
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
型
0x6upsns2#
对于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);
字符串
xn1cxnb43#
在.NET中没有这样的原生类型,你需要自己开发一个。
stszievb4#
从.NET 8开始,IPNetwork现在可以在System.Net命名空间中使用。
IPNetwork n = IPNetwork.Parse("192.168.0.0/16");
4条答案
按热度按时间2j4z5cfb1#
你可以使用GitHub上的代码来做到这一点:
https://github.com/lduchosal/ipnetwork
字符串
输出
型
0x6upsns2#
对于ASP.NET Core,现在有IPNetwork类。示例用法如下:
字符串
xn1cxnb43#
在.NET中没有这样的原生类型,你需要自己开发一个。
stszievb4#
从.NET 8开始,IPNetwork现在可以在System.Net命名空间中使用。
字符串