【问题标题】:How to get the IP address of a machine in C#如何在C#中获取机器的IP地址
【发布时间】:2011-01-02 10:18:26
【问题描述】:

如何在 C# 中获取机器的 IP 地址?

【问题讨论】:

  • 那么您至少可以链接到该文章并告诉我们它有什么问题。顺便说一句,循环有什么问题? :)
  • 如前所述,“127.0.0.1”是正确答案。它是当前机器的 IP 地址。
  • @MSalters:我仍然不确定return 127.0.0.1 是否会是我赞成的答案:)
  • @hobodave,也许他只是认为在 StackOverflow 上会有一个有用的问题和答案——这里的问题和答案越多,它就越有用,不是吗?
  • @ArielBH,我刚刚搜索了“.net 获取当前机器的 IP 地址”并得到了这个问题。你的评论一点用都没有。

标签: c# .net ip-address


【解决方案1】:
IPAddress[] localIPs = Dns.GetHostAddresses(Dns.GetHostName());

您的机器没有单一的 IP 地址,返回的一些地址可能是 IPv6。

MSDN 链接:

或者,正如MSalters 提到的,127.0.0.1 / ::1loopback 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();
}

【讨论】:

  • 这是执行GetHostAddressesGetHostName两次;您应该将 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 ());
 }

【讨论】:

【解决方案4】:
 string hostName = Dns.GetHostName(); // Retrive the Name of HOST

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

//使用以下命名空间- 使用 System.Net;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多