如果我们让用户输入几个ip范围,例如172.16.11.5 - 100,我怎么能写一个函数来检查IP(172.16.11.50)是否属于范围?
是否有任何现有的.NET库可以利用?
好的,这是星期五下午,我已经度过了漫长的一周,所以我会感激一些帮助!目前,我有一个IP范围列表,如下所示:
List<IPRange> ipRanges = new List<IPRange>();
ipRanges.Add(new IPRange { From = "145.36.0.0", To = "145.36.255.255" });
ipRanges.Add(new IPRange { From = "194.183.227.184", To = "194.183.227.191" });
ipRanges.Add(new IPRange { From = "193.131.192.0", To = "193.131.223.255" });
Run Code Online (Sandbox Code Playgroud)
在获得客户端的IP之后,如果它落在这些范围集之间的任何位置,则需要将其重定向到其他位置.
例如,
如果有人使用IP访问了该站点,则192.168.0.1允许他们访问.如果他们访问过145.36.1.0,他们将不被允许访问,因为它介于该列表中的第一个范围之间.
我可以按周期拆分每个IP,并计算范围开始变化的位置,然后进行比较,但这在服务器上会很重.
我知道IP基本上只是十进制数,但我不确定它是如何工作的.
有没有人遇到过这个?
干杯,肖恩.
.NET 有 IP 地址范围的概念吗?
我需要测试给定的 IP 地址是否在地址范围内。
我可以写一些 API 来给我类似的东西
IPRange ipRange = IPRange.Parse("127.0.0.1-127.0.0.15");
ipRange.Contains(someAddress);
Run Code Online (Sandbox Code Playgroud)
但如果已经内置了类似的功能,我不想重新发明轮子。