.NET 8 中的 IPNetwork

.NET 8 中的 IPNetwork

Intro

.NET 8 新增了 IPNetwork 的实现,支持 CIDR 网络格式,之前在 ASP.NET Core 的代码里有一个实现,可以参考:https://github.com/dotnet/aspnetcore/blob/v8.0.0-rc.2.23480.2/src/Middleware/HttpOverrides/src/IPNetwork.cs

现在在 runtime 中正式支持了

Sample

var ipNetwork = "198.51.0.0/16";
var network = IPNetwork.Parse(ipNetwork);
var ip = IPAddress.Parse("198.51.250.42");
Console.WriteLine(network.Contains(ip));

输出结果如下:

07772a318678f7a7b448c8b7a7d710b7.png

More

在之前的版本中我们如果想要支持 CIDR 网络需要额外添加引用,从 .NET 8 开始就不再需要了,这对于解析网络非常有利,尤其是进行 IP 端的检测来说,我们之前就会有根据 IP 地址以及 IP 地址段进行拦截的需求,禁止非法 IP 访问

也发现了一个在线的 CIDR 计算工具:https://cidr.xyz/, 有需要的小伙伴可以收藏一下

46330ad4fa4a0e37643b19395179f6c8.png

References

  • https://github.com/dotnet/runtime/issues/79946

  • https://github.com/dotnet/runtime/pull/82779

  • https://learn.microsoft.com/en-us/dotnet/api/system.net.ipnetwork?view=net-8.0&WT.mc_id=DT-MVP-5004222

  • https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.httpoverrides.ipnetwork?view=aspnetcore-7.0&WT.mc_id=DT-MVP-5004222

  • https://source.dot.net/#System.Net.Primitives/System/Net/IPNetwork.cs,812cd52a3fc9a73f

  • https://source.dot.net/#Microsoft.AspNetCore.HttpOverrides/IPNetwork.cs,97161112445b6fd1

  • https://github.com/dotnet/aspnetcore/blob/v8.0.0-rc.2.23480.2/src/Middleware/HttpOverrides/src/IPNetwork.cs

  • https://github.com/WeihanLi/SamplesInPractice/blob/master/net8sample/Net8Sample/IPNetworkSample.cs

  • https://cidr.xyz/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值