1. 程式人生 > >【C#】獲取本機IP地址

【C#】獲取本機IP地址

前言

   最近開始做牛腩新聞釋出系統,剛接觸網頁開發,因為沒有基礎,做起來比較困難,當然BUG就多了。不過“牛”老師水平很高,講的很清楚,出現BUG分分鐘就可以搞定。在做評論新聞這一功能時,需要獲取本機的IP地址。這時就出現BUG了。

BUG

根據“牛”老師的方法:

IP = Request.ServerVariables["REMOTE_ADDR"]; 

用這個方法獲取IP地址,可是我去資料庫看的時候卻是 ::1 這樣的:
在這裡插入圖片描述
然後上百度上查,造成這種情況的原因,百度上有各種說法。 通過分析鄙人認為這個方法Request.ServerVariables[“REMOTE_ADDR”],可能解析是的IPV6的地址。而我們需要的IPV4.

解決辦法

			string hostName = Dns.GetHostName();   //獲取本機名                                 
            IPHostEntry IpEntry = Dns.GetHostEntry(hostName);
            for (int i = 0; i < IpEntry.AddressList.Length; i++)
            {
                //從IP地址列表中篩選出IPv4型別的IP地址
                //AddressFamily.InterNetwork表示此IP為IPv4,
                //AddressFamily.InterNetworkV6表示此地址為IPv6型別
                
                if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                {
                    IP= IpEntry.AddressList[i].ToString();
                }
            }  

Dns.GetHostEntry()

   Dns.GetHostEntry(主機名) :這個方法可以獲取本機的IP地址,不論是IPV4還是IPV6都可以。返回值是一個實體。當我斷點看了一下實體裡的東西,就恍然大悟了。還等什麼呢 ,趕快去試試吧