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"];
}
}
留言列表