如果 IP 位于 IP 范围之间,则限制该 IP

2024-04-01

好的,今天是星期五下午,我度过了漫长的一周,所以希望得到一些帮助! 目前,我有一个 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" });

获取客户端的 IP 后,如果它落在这些范围组之间的任何位置,则需要将它们重定向到其他地方。

例如,

如果有人使用该 IP 访问该网站192.168.0.1,他们将被允许访问。 如果他们拜访145.36.1.0,他们将不被允许访问,因为它落在该列表中的第一个范围之间。

我可以按周期分割每个 IP,并计算出范围开始变化的位置,然后进行比较,但这会对服务器造成沉重负担。

我知道 IP 基本上只是十进制数字,但我不太确定它是如何工作的。

以前有人遇到过这个吗?

干杯,肖恩。


转换每个IP地址编号 http://techtaxi.blogspot.com/1990/01/c-function-to-convert-ip-address-to-ip.html,然后检查用户 ip 地址是否在这些数字之间。

public double Dot2LongIP(string DottedIP)
{
    int i;
    string [] arrDec;
    double num = 0;
    if (DottedIP == "")
    {
       return 0;
    }
    else
    {
       arrDec = DottedIP.Split('.');
       for(i = arrDec.Length - 1; i >= 0 ; i --)
       {
          num += ((int.Parse(arrDec[i])%256) * Math.Pow(256 ,(3 - i )));
       }
       return num;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果 IP 位于 IP 范围之间,则限制该 IP 的相关文章

随机推荐