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

arrow
arrow
    全站熱搜

    鴨爸 發表在 痞客邦 留言(0) 人氣()