足彩篮彩哪里买 篮彩神棍区手机版 nba篮彩怎么玩 1月5日篮彩 篮彩大小分攻略 篮彩分析网站 1.79完美篮彩大极品 篮彩预测分析专家推荐 足彩篮彩解盘分析 篮彩竞彩 篮彩分析捷报 网易篮彩 1.79火龙大极品篮彩版 篮彩大小分什么意思 nba篮彩篮球彩票

    歡迎訪問北大青鳥魯廣校區~

  1. 加入收藏
  2. 設為主頁
  3. 學校簡介
  • 招生熱線:17740513250

    QQ:3002585199

    業務總機:027-87807717

    招生熱線:17740513250

  • 微信號:whbdqn
    微信客服
    微信公眾號
×
  • 北大青鳥大數據課程
  • 北大青鳥網絡工程師
  • 北大青鳥web設計專業
  • 北大青鳥PHP專業
  • 北大青鳥啟蒙星課程

.net教程:Asp.net的IP地址屏蔽功能設計

責任編輯:027hpedu來源:北大青鳥魯廣校區.Net技術教程發布時間:2014-04-29 09:56
導讀:許多人在訪問一些網站時不想讓別人看到自己的ip地址,但是不知道該如何設置。北大青鳥魯廣校區專業老師教大家Asp.net的ip地址屏蔽功能設計,快來學哦!

  “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個段的值,然后將它們組合為一個整數,下面將提供這個擴展方法:

  ///

  /// 將IP地址轉為整數形式

  ///

  /// 整數

  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").轉換為整數()

  這里還有一個用于逆轉換的擴展方法,用于將long轉回IPAddress:

  ///

  /// 將整數轉為IP地址

  ///

  /// IP地址

  public static IPAddress 轉換為IP地址(this long l)

  {

  var b = new byte[4];

  for (int i = 0; i < 4; i++)

  {

  b[3 - i] = (byte)(l >> 8 * i & 255);

  }

  return new IPAddress(b);

  }

  這樣我們就可以通過計算得到正確并有意義的整數了:

  “127.0.0.1” -> 2130706433

  “127.0.0.2” –> 2130706434

  OK,確立了方案核心,下面開始設計SQLServer數據表:

  這樣設計后,在添加時將起始和終止IP地址轉為long類型并存入,并指定一個過期時間。

  在驗證時只需要獲取所有未過期的條目,比較傳入的IP地址是否介于起始值和終止值之間即可。

  以往通過字符串存儲和驗證的方案中,屏蔽時要么屏蔽一個的IP地址,要么就屏蔽一段或兩段IP,如“192.168.*.*”,要想屏蔽“192.168.1.200”到“192.168.4.64”之間的IP的話,將會非常麻煩;

  而我們這樣設計就可以輕松實現:“192.168.1.200”在數據庫里存儲的是“3232235976”,“192.168.4.64”在數據庫中是“3232236608”,即使使用肉眼也能快地判斷傳入的地址是否介于它們之間,更不要說計算機查詢了。

  下面為數據表生成EDM模型:

  添加IP屏蔽記錄的代碼:

  ///

  /// 添加一個新的IP屏蔽區段

  ///

  /// 起始IP,如61.51.200.0

  /// 終止IP,如61.51.255.255

  /// 屏蔽截止時間

  /// ID號

  public static Guid 添加(string IP區段起始值, string IP區段終止值, DateTime 過期時間)

  {

  var id = Guid.NewGuid();

  var sip = IPAddress.Parse(IP區段起始值).轉換為整數();

  var eip = IPAddress.Parse(IP區段終止值).轉換為整數();

  using (var c = new SiteMainEntities())

  {

  //檢測是否已存在相同的IP屏蔽記錄

  var a = c.IP地址屏蔽.Where(f => f.區段起始值 == sip && f.區段終止值 == eip);

  //如果存在則更新其過期時間

  if (a.Count()>0)

  {

  var l = a.First();

  if (l.過期時間 < 過期時間) l.過期時間 = 過期時間;

  }

  //不存在則正常添加一個新的屏蔽記錄

  else c.AddToIP地址屏蔽(new IP地址屏蔽 { ID = id, 過期時間 = 過期時間, 區段起始值 = sip, 區段終止值 = eip });

  c.SaveChanges();

  }

  return id;

  }

  檢測指定IP地址是否被屏蔽的代碼:

  ///

  /// 檢測指定IP地址是否已受到屏蔽

  ///

  /// 要檢測的IP地址

  /// 是否屬于已屏蔽的IP

  public static bool 檢測是否被屏蔽(string IP地址)

  {

  var ip = IPAddress.Parse(IP地址).轉換為整數();

  using (var c = new SiteMainEntities())

  {

  return c.IP地址屏蔽.Count(f => f.過期時間 > DateTime.Now && ip >= f.區段起始值 && ip <= f.區段終止值) > 0;

  }

  }

  這種方案比起以往的字符串驗證方案來說優雅了許多,并可以提高數據庫查詢的效率,建議各位在日后的網站開發中都采用此方案。

  武漢北大青鳥魯廣校區,專業老師會幫你找到適合自己學習的課程和就業方向,詳細了解ip地址屏蔽功能設計,現在就與專業老師在線老師溝通或撥打電話:027-87807717,或QQ咨詢:027-87807717.

本文標題:.net教程:Asp.net的IP地址屏蔽功能設計,責任編輯:027hpedu,于2014年04月29日09時56分發布于北大青鳥魯廣校區。武漢北大青鳥宏鵬魯廣校區,是北大青鳥武漢電腦學校,專業IT計算機培訓,擁有軟件/網絡/安卓/Web前端/Java課程.北大青鳥地址:光谷廣場魯巷數碼港.電話:027-87807717

專業老師指導

趙老師

從事IT教育培訓十年有余,致力于幫助廣大學子找到適合自己的專業。

培訓咨詢客服

劉老師

IT培訓專業客服,用自己的真誠解決了無數學子的困惑。

本文地址:
文章標題:
  • 北大青鳥Java軟件開發
  • 北大青鳥UI設計課程_零基礎可學
  • 北大青鳥動漫設計_武漢設計學校
  • 北大青鳥數字藝術_武漢電腦學校
×
在線咨詢更多問題

如您有任何疑問
在線咨詢隨時為您解答或撥打咨詢熱線:17740513250

×
  • 姓 名*
  • 手 機*
  • QQ號/微信號
  • 所報學科 *
  • 其他備注
  • 溫馨提示:請保持手機暢通,咨詢老師將為您提供專屬的一對一報名服務。

nba篮彩篮球彩票
足彩篮彩哪里买 篮彩神棍区手机版 nba篮彩怎么玩 1月5日篮彩 篮彩大小分攻略 篮彩分析网站 1.79完美篮彩大极品 篮彩预测分析专家推荐 足彩篮彩解盘分析 篮彩竞彩 篮彩分析捷报 网易篮彩 1.79火龙大极品篮彩版 篮彩大小分什么意思 nba篮彩篮球彩票
现在广州哪行业赚钱 福建11选5怎么杀号 广东11选五投注表 晚上怎么用专车赚钱 总进球数怎么算 北京pk拾开奖结果 卖鞋和卖包那个赚钱吗 十一运夺金开奖号 10分快3怎么看 赚钱玩下载 天津时时彩自由的百科 河北快3官网结果 湖北十一选五走势图手机版 老版捕鱼达人2安卓版 大乐透专家杀号2元网 北京pk10哪种最稳