close
最近因為升級Server到2008
原本是用System.Net.Dns.GetHostAddresses(m_hostName).GetValue(0).ToString()
讀 IP可是回傳了這個東東...fe80::9151:ac18:e0fb:8458%14
原來是IPv6搞的鬼啦.....
就換了一下寫法了
private static string m_ipAddress = ""; private static string m_hostName = ""; m_hostName = Dns.GetHostName(); //1.Linq寫法 (DotNet FrameWokr 3.5) Dns.GetHostEntry(Dns.GetHostName()).AddressList.First(o => o.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString(); //2.DotnetFrameWork 3.5以前 //###Windows 2008 有IPv6如果有勾選那就用2.1或2.2的方式才會正確 //2.1 foreach (IPAddress ipaddr in Dns.GetHostEntry(m_hostName).AddressList) if (ipaddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { m_ipAddress = ipaddr.ToString(); break; } //2.2 foreach (IPAddress ip in Dns.GetHostAddresses(m_hostName)) { if (ip.AddressFamily.ToString() == "InterNetwork") { m_ipAddress = ip.ToString(); break; } } //2.3 m_ipAddress = System.Net.Dns.GetHostAddresses(m_hostName).GetValue(0).ToString(); //3.DotnetFrameWork 1.0、1.1版本(會出現過期的訊息) IPAddress ip = Dns.Resolve(m_hostName).AddressList[0]; m_ipAddress = ip.ToString();
參考:http://blog.darkthread.net/post-2010-12-31-get-svr-ip-in-2008.aspx
全站熱搜