判断ip地址段的问题

ttyrone 2011-10-12 03:21:09
从http://topic.csdn.net/u/20100810/12/19bcf715-c72c-4000-be85-38d5797860ea.html知道怎么判断ip大小的方法了,但是这个是写死了ip地址,我想先判断出地址,然后和数据库中的两个ip地址去进行大小比较。

private long getIpNum(String ipAddress)
{
String[] ip = ipAddress.Split(new char[] { '.' });
long a = int.Parse(ip[0]);
long b = int.Parse(ip[1]);
long c = int.Parse(ip[2]);
long d = int.Parse(ip[3]);

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

private bool isInner(long clientIp, long begin, long end)
{
return (clientIp >= begin) && (clientIp <= end);
}

调用方式是:
long ip = getIpNum("60.162.200.10");
long start_ip = getIpNum("60.162.200.0");
long end_ip = getIpNum("60.162.201.255");

if (isInner(ip, start_ip, end_ip))
{
Response.Write("<script>alert('是');history.back()</script>");
}
else
{
Response.Write("<script>alert('不是');history.back()</script>");
}

这样是没问题,可是我希望long ip = getIpNum("60.162.200.10");处的60.162.200.10是取一个label控件的值
lblIp.Text = Page.Request.UserHostAddress;
我把调用方式的long ip = getIpNum("60.162.200.10");改成了long ip = getIpNum("lblIp.Text");
可是这样出错,getIpNum中的
String[] ip = ipAddress.Split(new char[] { '.' });
long a = int.Parse(ip[0]);
long b = int.Parse(ip[1]);
只有两个数了,a=lblIp,b=Text。

请问这里应该怎么写呢?
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ttyrone 的回复:]
额,已经解决一个了
把long ip = getIpNum("lblIp.Text");改成long ip = getIpNum(lblIp.Text);就可以了
另外还有个问题,因为begin和end的地址在数据库里,必须把值取出来赋给隐藏的控件吗,有没有getelementbyid之类的方法,有的话怎么写呢?
[/Quote]呵呵,你参数写错了
ttyrone 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiao0326 的回复:]

begin和end当参数传递,你能传给方法就行了, 至于放哪去、怎么去都无所谓了,
[/Quote]

能详细讲讲吗,我就是不知道怎么把这个地址传过去啊,现在能想到的办法就是先从数据库里取出来,然后赋值给一个隐藏的label,然后再去读这个label的值,有简单一点的方法吗
油泼白菜 2011-10-12
  • 打赏
  • 举报
回复
begin和end当参数传递,你能传给方法就行了, 至于放哪去、怎么去都无所谓了,
ttyrone 2011-10-12
  • 打赏
  • 举报
回复
额,已经解决一个了
把long ip = getIpNum("lblIp.Text");改成long ip = getIpNum(lblIp.Text);就可以了
另外还有个问题,因为begin和end的地址在数据库里,必须把值取出来赋给隐藏的控件吗,有没有getelementbyid之类的方法,有的话怎么写呢?
md5e 2011-10-12
  • 打赏
  • 举报
回复

/// <summary>
/// IP地址和数字之间转化的算法

/// </summary>
/// <param name="ipAddress">传入IP地址</param>
/// <returns></returns>

public static uint IPToInt(string ipAddress)
{
string disjunctiveStr = ".,: ";
char[] delimiter = disjunctiveStr.ToCharArray();
string[] startIP = null;
for (int i = 1; i <= 5; i++)
{
startIP = ipAddress.Split(delimiter, i);
}
string a1 = startIP[0].ToString();
string a2 = startIP[1].ToString();
string a3 = startIP[2].ToString();
string a4 = startIP[3].ToString();
uint U1 = uint.Parse(a1);
uint U2 = uint.Parse(a2);
uint U3 = uint.Parse(a3);
uint U4 = uint.Parse(a4);
uint U = U1 << 24;
U += U2 << 16;
U += U3 << 8;
U += U4;
return U;
}
/// <summary>
/// 数字和IP地址之间转化的算法
/// </summary>
/// <param name="ipAddress">传入IP地址</param>
/// <returns></returns>

public static string IntToIP(uint ipAddress)
{
long ui1 = ipAddress & 0xFF000000;
ui1 = ui1 >> 24;
long ui2 = ipAddress & 0x00FF0000;
ui2 = ui2 >> 16;
long ui3 = ipAddress & 0x0000FF00;
ui3 = ui3 >> 8;
long ui4 = ipAddress & 0x000000FF;
string IPstr = "";
IPstr = System.Convert.ToString(ui1) + "." + System.Convert.ToString(ui2) + "." + System.Convert.ToString(ui3) + "." + System.Convert.ToString(ui4);
return IPstr;
}

62,039

社区成员

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

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

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

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