【C#】獲取本機IP地址
阿新 • • 發佈:2018-11-19
前言
最近開始做牛腩新聞釋出系統,剛接觸網頁開發,因為沒有基礎,做起來比較困難,當然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都可以。返回值是一個實體。當我斷點看了一下實體裡的東西,就恍然大悟了。還等什麼呢 ,趕快去試試吧