前一段時間有寫過一篇《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地址