检测IP是否在指定范围

xyxweb 2006-08-06 06:16:53
long ip = IPAddress.Parse(Request.UserHostAddress).Address;
long ip1= IPAddress.Parse("192.168.0.0").Address;
long ip2= IPAddress.Parse("192.168.0.255").Address;

if(ip>ip1&&ip<ip2)
{
Response.Write("yes"+Request.UserHostAddress);
}
else
{
Response.Write("no"+Request.UserHostAddress);
}

这样写有问题吗?应该应该怎么写?
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyxweb 2006-08-11
  • 打赏
  • 举报
回复
我的目的是想:可以设定一个IP范围,如是在这个范围内就充许访问,不在这个范围就不允许访问。我这样写有没有问题。
long ip1= IPAddress.Parse("192.168.0.0").Address;
long ip2= IPAddress.Parse("192.168.0.255").Address;
这样就可以验证192.168.0.0-192.168.0.255这些ip吗?
pongking 2006-08-11
  • 打赏
  • 举报
回复
楼主你试一下不就知道了?

我也提供一个方法,是SOCUT的

public static uint GetUIntIP(string strip)
{
uint ip1=Convert.ToUInt32(strip.Split('.')[0]);//截取IP地址第0位,并转为无符号的整数
uint ip2=Convert.ToUInt32(strip.Split('.')[1]);
uint ip3=Convert.ToUInt32(strip.Split('.')[2]);
uint ip4=Convert.ToUInt32(strip.Split('.')[3]);
return ip1*256*256*256+ip2*256*256+ip3*256+ip4-1;//返回最终10进制结果
}
//===================== 检测用户IP是否符合 =====================
//ipHead 起始点IP
//ipFoot 结束点IP
//userip 用户IP
public static bool GetBool(string ipstart,string ipend,string userip)
{
if(GetUIntIP(ipstart)<=GetUIntIP(userip)&&GetUIntIP(ipend)>=GetUIntIP(userip))
{
return true; //符合要求则返回“真”
}
return false; //不符合,则返回“假”
}
xyxweb 2006-08-10
  • 打赏
  • 举报
回复

其实我觉得,只要判断了协议族是IPv4,使用Address属性也没什么问题

请问为什么这么说?
LuoZhiWei2008 2006-08-06
  • 打赏
  • 举报
回复
OK
i三千 2006-08-06
  • 打赏
  • 举报
回复
就是说,保证"192.168.0.0"是一个合法的IP?
Ivony 2006-08-06
  • 打赏
  • 举报
回复
long ip = IPAddress.Parse(Request.UserHostAddress).Address;
long ip1= IPAddress.Parse("192.168.0.0").Address;
long ip2= IPAddress.Parse("192.168.0.255").Address;

if(ip>ip1&&ip<ip2)
{
Response.Write("yes"+Request.UserHostAddress);
}
else
{
Response.Write("no"+Request.UserHostAddress);
}

这样写有问题吗?应该应该怎么写?


除了会有变易器警告,其他没问题。

其实我觉得,只要判断了协议族是IPv4,使用Address属性也没什么问题
i三千 2006-08-06
  • 打赏
  • 举报
回复
楼上的。谁都知道去做对比,但如何对比,如何高效,准确,所检测的IP范围更广,你没有说。
andy0618 2006-08-06
  • 打赏
  • 举报
回复
可以建一个ID的表,把IP范围写入表,检索表进行比较是否存在
还可以把IP范围写一个数组或哈唏表,然后检索对比
i三千 2006-08-06
  • 打赏
  • 举报
回复
转成十进制对比,这是正确的。
i三千 2006-08-06
  • 打赏
  • 举报
回复
IPAddress
如何定义的?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧