2010-01-07 56 views
10

如何獲取C#機器的IP地址?如何獲取C#機器的IP地址

+2

那麼你至少可以鏈接到文章,並告訴我們它有什麼問題。順便問一下循環有什麼問題? :) – 2010-01-07 10:15:42

+3

正如措辭,「127.0.0.1」是一個正確的答案。這是當前機器的IP地址。 – MSalters 2010-01-07 10:21:09

+1

@MSalters:我仍然不確定'返回127.0.0.1'是否會成爲我想要的答案:) – marcgg 2010-01-07 11:33:01

回答

31
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName()); 

你的機器沒有一個單一的IP地址,以及一些返回的地址可以是IPv6的。

MSDN鏈接:

可選地,如所提到MSalters127.0.0.1/::1loopback address和將總是指本地計算機。但是,由於顯而易見的原因,它不能用於從遠程計算機連接到本地計算機。

+2

複製從@patridge在另一個答案:如果您正在尋找更相關的IP地址,你可能想排除回送IP(例如,127.0.0.1和:: 1),如下所示:.Where(ip =>!Net.IPAddress.IsLoopback(ip)) – 2014-06-25 18:48:31

1
IPHostEntry ip = DNS.GetHostByName (strHostName); 
IPAddress [] IPaddr = ip.AddressList; 

for (int i = 0; i < IPaddr.Length; i++) 
{ 
    Console.WriteLine ("IP Address {0}: {1} ", i, IPaddr[i].ToString()); 
} 
+5

GetHostByName is deprecated - http ://msdn.microsoft.com/en-us/library/system.net.dns.gethostbyname.aspx – 2010-01-07 10:04:04

8

我想要的答案是使用System.Net

string ipAddress = ""; 
if (Dns.GetHostAddresses(Dns.GetHostName()).Length > 0) 
{ 
    ipAddress = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); 
} 
+8

這是執行'GetHostAddresses'和'GetHostName'兩次;你應該把GetHostAddresses的結果賦給一個變量,然後檢查'Length'。 – 2010-01-11 10:26:50

+8

如果你正在尋找一個更相關的IP地址,你可能想排除環回IP(例如,127.0.0.1和:: 1),如下所示:'.Where(ip =>!Net.IPAddress.IsLoopback(ip ))'。 – patridge 2010-03-15 17:12:23

0
string hostName = Dns.GetHostName(); // Retrive the Name of HOST 

      // Get the IP 
      string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString(); 

//使用後Namespace- ;