如何获取PC机的本地IP?

The*_*rIV 3 .net c# asp.net networking asp.net-core

我想获取我的电脑的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());
}
Run Code Online (Sandbox Code Playgroud)

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

小智 6

您缺少按类型 (v4) 过滤 IP。无论如何,您的 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());
Run Code Online (Sandbox Code Playgroud)