解讀Asp.net教程:設(shè)計IP地址屏蔽功能_.Net教程
推薦:.Net教程之HTTP狀態(tài)碼200,301,302跳轉(zhuǎn)非常常用,在哪里都一樣,這里的一些說明和用法也如此,不止適用于asp.net,其他語言也會用得到。跳轉(zhuǎn)的目的本來很簡單,就是當用戶或系統(tǒng)需要時從一個頁面轉(zhuǎn)向另一個頁面,但自從有了
“IP地址的長度為32位,分為4段,每段8位,用十進制數(shù)字表示,每段數(shù)字范圍為0~255,段與段之間用句點隔開。”
由此我們了解到,IP地址實際上是一個32位正整數(shù),在C#中可以使用uint類型來表示,但SQLServer數(shù)據(jù)庫里好像沒有對應(yīng)的類型;轉(zhuǎn)而使用數(shù)據(jù)庫支持的int類型的話,則會出現(xiàn)溢出的情況;因此我們做出妥協(xié):使用long(bigint)類型。
以下為引用的內(nèi)容:
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地址轉(zhuǎn)為整數(shù)呢?我們看到IPAddress類中有一個“[否決的]”實例屬性Address,這個屬性的確可以返回一個long值,但是測試一下,得到的數(shù)據(jù)確實這樣的:
以下為引用的內(nèi)容:
“127.0.0.1” -> 16777343 “127.0.0.2” –> 33554559 |
的確該讓它“否決”,這樣的整數(shù)對我們來說毫無意義,我們是無法通過這樣的方法比較傳入的IP是否介于兩個IP值之間的。
那么只有自己動手了,我們將通過IPAddress類的GetAddressBytes()實例方法獲取IP的4個段的值,然后將它們組合為一個整數(shù),下面將提供這個擴展方法:
以下為引用的內(nèi)容:
/// <summary> /// 將IP地址轉(zhuǎn)為整數(shù)形式 /// </summary> /// <returns>整數(shù)</returns> public static long 轉(zhuǎn)換為整數(shù)(this IPAddress ip) { long o = 0; foreach (byte f in ip.GetAddressBytes()) { o = (long)f << 8 * x--; } return o; |
你可以這樣使用這個擴展方法:
IPAddress.Parse("127.0.0.1").轉(zhuǎn)換為整數(shù)()
分享:解析.NET程序員 Ruby核心語法入門本文的目的是為了找出為什么.NET程序員都想學(xué)習(xí)并使用Ruby,并探索Ruby語言的核心語法。 微軟的IronRuby項目為Windows平臺帶來了強大的動態(tài)語言,Ruby編程語言是一個現(xiàn)代的,面向?qū)ο蟮?/p>
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-解讀Asp.net教程:設(shè)計IP地址屏蔽功能。