狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

在啟用了IPV6的機器上獲取客戶端ipv4地址

admin
2021年3月10日 11:34 本文熱度 3735

從 Windows Vista 首開默認啟用IPV6 的先例,而在 IPv4、IPv6 兩者共存的環境下,IPv6 具有較高的優先級,因此獲取的 IP 地址就會以 IPv6 格式為主。好在為了解決這問題,不必刻意把 IPv6 關掉。同樣的問題是Host 文件里對localhost的解析,默認返回的是ipv6的地址。具體的說明可以看這篇文章Returning an IPv4 Address in an IPv6-Enabled Environment,文中也有代碼,運行起來不符合預期,修正的代碼如下:

using System;
using System.Net;
using System.Web;

public class IPNetworking
{
    /// <summary>
    /// 取得客戶端主機 IPv4 地址
    /// </summary>
    /// <returns></returns>
    public static string GetClientIPv4()
    {
        string ipv4 = String.Empty;

        foreach (IPAddress ip in Dns.GetHostAddresses(GetClientIP()))
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {
                ipv4 = ip.ToString();
                break;
            }
        }

        if (ipv4 != String.Empty)
        {
            return ipv4;
        }

        // 原代碼使用 Dns.GetHostName 方法取回的是 Server 端資料,非 Client 端。
        // 改為利用 Dns.GetHostEntry 方法,由獲取的 IPv6 位址反查 DNS 記錄,
        // 再逐一判斷是否屬于 IPv4 協議定,如果是轉換為 IPv4 地址。
        foreach (IPAddress ip in Dns.GetHostEntry(GetClientIP()).AddressList)
        //foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {
                ipv4 = ip.ToString();
                break;
            }
        }

        return ipv4;
    }

    /// <summary>
    /// 取得客戶端主機地址
    /// </summary>
    public static string GetClientIP()
    {
        if (null == HttpContext.Current.Request.ServerVariables["HTTP_VIA"])
        {
            return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }
        else
        {
            return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        }
    }
}

IPV6取代IPV4是趨勢,在沒有大規模部署IPV6,以IPV4為主的環境下以上代碼可以救急。


該文章在 2021/3/10 11:34:41 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved