解讀Asp.net教程:設(shè)計IP地址屏蔽功能_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:.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)

      {
      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").轉(zhuǎn)換為整數(shù)()

      分享:解析.NET程序員 Ruby核心語法入門
      本文的目的是為了找出為什么.NET程序員都想學(xué)習(xí)并使用Ruby,并探索Ruby語言的核心語法。 微軟的IronRuby項目為Windows平臺帶來了強大的動態(tài)語言,Ruby編程語言是一個現(xiàn)代的,面向?qū)ο蟮?/p>

      共4頁上一頁1234下一頁
      來源:模板無憂//所屬分類:.Net教程/更新時間:2009-08-30
      相關(guān).Net教程