最近因為升級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
文章標籤
全站熱搜
