解读Asp.net教程:设计IP地址屏蔽功能_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:.Net教程之HTTP状态码200,301,302
跳转非常常用,在哪里都一样,这里的一些说明和用法也如此,不止适用于asp.net,其他语言也会用得到。跳转的目的本来很简单,就是当用户或系统需要时从一个页面转向另一个页面,但自从有了

“IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。”

由此我们了解到,IP地址实际上是一个32位正整数,在C#中可以使用uint类型来表示,但SQLServer数据库里好像没有对应的类型;转而使用数据库支持的int类型的话,则会出现溢出的情况;因此我们做出妥协:使用long(bigint)类型。

以下为引用的内容:

TIP:

int取值范围:-2,147,483,648 到 2,147,483,647

uint取值范围:0 到 4,294,967,295

long取值范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

那么如何将IP地址转为整数呢?我们看到IPAddress类中有一个“[否决的]”实例属性Address,这个属性的确可以返回一个long值,但是测试一下,得到的数据确实这样的:

以下为引用的内容:

“127.0.0.1” -> 16777343

“127.0.0.2” –> 33554559

的确该让它“否决”,这样的整数对我们来说毫无意义,我们是无法通过这样的方法比较传入的IP是否介于两个IP值之间的。

那么只有自己动手了,我们将通过IPAddress类的GetAddressBytes()实例方法获取IP的4个段的值,然后将它们组合为一个整数,下面将提供这个扩展方法:

以下为引用的内容:

/// <summary>

/// 将IP地址转为整数形式

/// </summary>

/// <returns>整数</returns>

public static long 转换为整数(this IPAddress ip)

{
int x = 3;

long o = 0;

foreach (byte f in ip.GetAddressBytes())

{

o = (long)f << 8 * x--;

}

return o;
}

你可以这样使用这个扩展方法:

IPAddress.Parse("127.0.0.1").转换为整数()

分享:解析.NET程序员 Ruby核心语法入门
本文的目的是为了找出为什么.NET程序员都想学习并使用Ruby,并探索Ruby语言的核心语法。 微软的IronRuby项目为Windows平台带来了强大的动态语言,Ruby编程语言是一个现代的,面向对象的

共4页上一页1234下一页
来源:模板无忧//所属分类:.Net教程/更新时间:2009-08-30
相关.Net教程