好的,今天是星期五下午,我度过了漫长的一周,所以希望得到一些帮助!
目前,我有一个 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(使用前将#替换为@)