c# 获取来访客户端的IP,并判断是否允许访问的IP段怎么做?

wssczb 2011-06-08 12:24:09
试了下网上的代码,本机运行,下面这2个后台代码都可以获取,不过获取IP都是127.0.0.1

protected void Page_Load(object sender, EventArgs e)
{
string ipAddress = Page.Request.UserHostAddress; //取到用户的IP地址
Label1.Text = ipAddress;
String user_IP = Request.ServerVariables["REMOTE_ADDR"].ToString();
Label2.Text = user_IP;}


要在一个局域网里用的,获取局域网里的客户端IP,并判断是否是允许访问的IP段,比如判断是否是10.110.120.0-1.110.225.0之间。代码怎么写?简单来说,就是获取并判断。
...全文
292 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wssczb 2011-06-08
  • 打赏
  • 举报
回复
楼上的大哥,我是新手,看不太懂呀,很不好意思,能否把获取了的ipAddress,加进10.110.120.0-1.110.225.0这个IP段加进去做判断,不要用return。。。。我用label显示判断之后的结果的
子夜__ 2011-06-08
  • 打赏
  • 举报
回复
 public static Int32 CompareIP(String p1, String p2)
{
String[] ip1 = p1.Trim().Split('.');
String[] ip2 = p2.Trim().Split('.');

for (Int32 i = 0; i < 4; i++)
{
ip1[i] = ip1[i].TrimStart('0');
ip2[i] = ip2[i].TrimStart('0');
}

Int64 n1 = Convert.ToInt64(String.Join("", ip1));
Int64 n2 = Convert.ToInt64(String.Join("", ip2));

if (n1 > n2)
return 1;
else if (n1 == n2)
return 0;
else
return -1;

}


Ip转long判断
System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse("");
long ip= ipaddress.Address;

a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;

或直接调用IP的WEBSERVICE
wssczb 2011-06-08
  • 打赏
  • 举报
回复
谢谢楼上的,很详细,也谢谢子夜兄~~结贴
weike021996 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]

C# code
public static Int32 CompareIP(String p1, String p2)
{
String[] ip1 = p1.Trim().Split('.');
String[] ip2 = p2.Trim().Split('.');

for (Int32 i = 0……
[/Quote]
+1
zell419 2011-06-08
  • 打赏
  • 举报
回复
127.0.0.1是自己定义的localhost地址 .
你发布了 让别人访问就不会了 。
wssczb 2011-06-08
  • 打赏
  • 举报
回复
。。。。。哭~~不是不学,是这个东西要的紧,木有时间慢慢学起来了
a0172716 2011-06-08
  • 打赏
  • 举报
回复
string startIP, endIP;
startIP="10.1.1.1" ; endIP="10.1.1.255";
{
// 分离出ip中的四个数字位
string[] startIPArray = startIP.Split('.');
string[] endIPArray = endIP.Split('.');

// 取得各个数字
long[] startIPNum = new long[4];
long[] endIPNum = new long[4];
for (int i = 0; i < 4; i++)
{
startIPNum[i] = long.Parse(startIPArray[i].Trim());
endIPNum[i] = long.Parse(endIPArray[i].Trim());
}

// 各个数字乘以相应的数量级
long startIPNumTotal = startIPNum[0] * 256 * 256 * 256 + startIPNum[1] * 256 * 256 + startIPNum[2] * 256 + startIPNum[3];
long endIPNumTotal = endIPNum[0] * 256 * 256 * 256 + endIPNum[1] * 256 * 256 + endIPNum[2] * 256 + endIPNum[3];

if (startIPNumTotal > endIPNumTotal)
{
label1.text="自己写";
}
else
{
label1.text="自己写";
}
sihonglaoren 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wssczb 的回复:]
楼上的大哥,我是新手,看不太懂呀,很不好意思,能否把获取了的ipAddress,加进10.110.120.0-1.110.225.0这个IP段加进去做判断,不要用return。。。。我用label显示判断之后的结果的
[/Quote]
不懂不能学啊,什么都不懂也来写程序。
风骑士之怒 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wssczb 的回复:]
楼上的大哥,我是新手,看不太懂呀,很不好意思,能否把获取了的ipAddress,加进10.110.120.0-1.110.225.0这个IP段加进去做判断,不要用return。。。。我用label显示判断之后的结果的
[/Quote]
1L大大不是给你办法了嘛。。 调用两次,大小区间

62,025

社区成员

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

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

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

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