如何在C#中获取机器的IP地址
Posted
技术标签:
【中文标题】如何在C#中获取机器的IP地址【英文标题】:How to get the IP address of a machine in C# 【发布时间】:2011-01-02 10:18:26 【问题描述】:如何在 C# 中获取机器的 IP 地址?
【问题讨论】:
那么您至少可以链接到该文章并告诉我们它有什么问题。顺便说一句,循环有什么问题? :) 如前所述,“127.0.0.1”是正确答案。它是当前机器的 IP 地址。 @MSalters:我仍然不确定return 127.0.0.1
是否会是我赞成的答案:)
@hobodave,也许他只是认为在 *** 上会有一个有用的问题和答案——这里的问题和答案越多,它就越有用,不是吗?
@ArielBH,我刚刚搜索了“.net 获取当前机器的 IP 地址”并得到了这个问题。你的评论一点用都没有。
【参考方案1】:
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());
您的机器没有单一的 IP 地址,返回的一些地址可能是 IPv6。
MSDN 链接:
Dns.GetHostAddresses IPAddress或者,正如MSalters 提到的,127.0.0.1
/ ::1
是loopback address 并且将始终引用本地计算机。然而,由于显而易见的原因,它不能用于从远程机器连接到本地机器。
【讨论】:
在另一个答案中从@patridge 复制:如果您正在寻找更相关的 IP 地址,您可能希望使用类似这样的内容排除环回 IP(例如,127.0.0.1 和 ::1) : .Where(ip => !Net.IPAddress.IsLoopback(ip))【参考方案2】:我想要的答案是
string ipAddress = "";
if (Dns.GetHostAddresses(Dns.GetHostName()).Length > 0)
ipAddress = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString();
【讨论】:
这是执行GetHostAddresses
和GetHostName
两次;您应该将 GetHostAddresses 的结果分配给一个变量,然后检查 Length
。
如果您正在寻找更相关的 IP 地址,您可能希望使用以下内容排除环回 IP(例如 127.0.0.1 和 ::1):.Where(ip => !Net.IPAddress.IsLoopback(ip))
。【参考方案3】:
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 ());
【讨论】:
GetHostByName 已弃用 - msdn.microsoft.com/en-us/library/…【参考方案4】: string hostName = Dns.GetHostName(); // Retrive the Name of HOST
// Get the IP
string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
//使用以下命名空间- 使用 System.Net;
【讨论】:
以上是关于如何在C#中获取机器的IP地址的主要内容,如果未能解决你的问题,请参考以下文章