前一段時間有寫過一篇《C#在xp,win7,win8下獲取本地IP的區別》小博文,後來發現上面的方法對於win8系統在斷網情況下是錯誤的,會提示訪問越界。
現在貼出最新代碼,這段代碼是在xp,win7以及win8都是適用的。眾所周知,win7和win8都支持了IPv6,所以導致我們用以前的辦法會行不通。
static void Main(string[] args) { string HostName = Dns.GetHostName(); IPHostEntry IpEntry = Dns.GetHostEntry(HostName); IPAddress ip = null; for (int i = 0; i < IpEntry.AddressList.Length; i++) { if (IpEntry.AddressList[i].AddressFamily.ToString() == "InterNetwork") { ip = IpEntry.AddressList[i]; break; } } Console.WriteLine(ip); }
上面代碼可以保證獲取IPv4地址