LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

從 Windows Vista 首開默認啟用IPV6 的先例,而在 IPv4、IPv6 兩者共存的環(huán)境下,IPv6 具有較高的優(yōu)先級,因此獲取的 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 協(xié)議定,如果是轉(zhuǎn)換為 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是趨勢,在沒有大規(guī)模部署IPV6,以IPV4為主的環(huán)境下以上代碼可以救急。


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

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
五月天AV在线资源站· | 又紧又大又爽精品一区二区 | 先锋影音AV资源在线高清 | 综合激情丁香久久狠狠男同 | 亚洲va欧美va在线 | 日韩欧美国产手机在线观看 |