using System.Net;

using System.Web.UI;

 

///<summary>

/// csIPNetworking 的摘要描述

///</summary>

public class csIPNetworking

{

   ///<summary>

   ///取得客戶端主機 IPv4 位址

   ///</summary>

   ///<returns></returns>

   public static string GetClientIPv4(Page tP)

   {

       foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP(tP)))

       {

           if (ip.AddressFamily.ToString() == "InterNetwork" && !"".Equals(ip))

           {

               return ip.ToString();

           }

       }

 

       // 原作使用 Dns.GetHostName 方法取回的是 Server 端資訊,非 Client 端。

       // 改寫為利用 Dns.GetHostEntry 方法,由獲取的 IPv6 位址反查 DNS 紀錄,

       // 再逐一判斷何者屬 IPv4 協定,即可轉為 IPv4 位址。

       foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP(tP)).AddressList)

       //foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))

       {

           if (ip.AddressFamily.ToString() == "InterNetwork" && !"".Equals(ip))

           {

              return ip.ToString();

           }

       }

       return "";

   }

 

   ///<summary>

   ///取得客戶端主機位址

   ///</summary>

   static string GetClientIP(Page tP)

   {

       return null == tP.Request.ServerVariables["HTTP_VIA"] ? tP.Request.ServerVariables["REMOTE_ADDR"] : tP.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

   }

}

 

 

, , , ,

倧齊 發表在 痞客邦 PIXNET 留言(0) 人氣()