2010-01-07 33 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- ;