【问题标题】:How to get the local IP of the PC?如何获取PC的本地IP?
【发布时间】:2019-07-29 07:02:10
【问题描述】:

我想获取我的 PC 的 IP(从路由器获取的本地 IP)。

我可以获取 IP,但网络上有其他 IP。有没有一种方法可以只提取所需的 IP 而无需获取数组中的所有 IP,然后从中选择所需的 IP?

代码尝试:

string strHostName = string.Empty;
strHostName = Dns.GetHostName();
IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
IPAddress[] address = ipHostEntry.AddressList;

foreach (var item in address)
{
    Console.WriteLine(item.ToString());
}

这段代码的结果是在网络上找到了一堆 IP,包括我的 IP(广播域、IPv6 和类似的东西,但不包括其他设备的 IP)。我只想获取我的实际 IP 而不是全部,因为代码将发布在我无法一直监控 IP 的机器上。

【问题讨论】:

  • ip 不存在,这取决于您系统上的接口数量。您应该照顾所有这些或专门寻找一个界面。
  • 如果你想知道你连接到互联网的接口的IP地址,this SO answer有一个解决方案

标签: c# asp.net .net asp.net-core networking


【解决方案1】:

您缺少按类型过滤 IP (v4)。无论如何,您的 PC 上可以有多个 IP v4 地址(例如,您可以有 2 个接口,LAN 和 Wi-Fi)。

以下代码获取可用 IP v4 的列表。

List<string> ips = new List<string>();

System.Net.IPHostEntry entry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());

foreach (System.Net.IPAddress ip in entry.AddressList)
    if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
        ips.Add(ip.ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 2014-11-27
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2011-10-11
    相关资源
    最近更新 更多