c# - 如何获取PC的本地IP?

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

我想获取我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 (v4)。无论如何,您的 PC 上可以有多个 IP v4 地址(例如,您可以有 2 个接口(interface),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());

关于c# - 如何获取PC的本地IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248634/

相关文章:

c# - 计算存储过程的结果

c# - elmah:没有 HttpContext 的异常?

.net - NuGet CLI 抛出错误无法找到 .nupkg

.NET 数据库枚举

c# - 双击时无法访问 csproj 文件

c# - string.Replace 不适用于报价

c# - 我应该公开 Actions 而不是事件吗?

c# - Entity Framework 6 和空间数据

asp.net - 在asp.net中设置ClientID

c# - 比较两个函数的负载/性能