如何获取网络适配器的IP地址

mic*_*fox 1 c# windows ip-address

我使用此代码获取可用的IPv4地址:

static void Main(string[] args)
    {
        string host = System.Net.Dns.GetHostName();
        System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(host);
        System.Net.IPAddress[] ipAddr = ipEntry.AddressList;
        for (int i = 0; i < ipAddr.Length; i++)
        {
            if (ipAddr[i].AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                Console.WriteLine( ipAddr[i]);

        }
    }
Run Code Online (Sandbox Code Playgroud)

对于我的机器,这目前给出:

192.168.1.11

192.168.240.1

192.168.182.1

10.1.1.121

192.168.1.11是我的网络适配器,接下来的两个来自VMware Network,10.1.1.121来自当前活动的OpenVPN连接.

如何才能可靠地检测IPv4地址192.168.1.11(=网络适配器)?我猜这只是偶然的第一名.

谢谢,罗伯特

Nap*_*ppy 8

你得到的答案并不完全正确,因为你的例子中的那四个IPv4地址都属于网络适配器,即使它们可能只是虚拟的.

要获取有关网络接口的更多信息,应检查NetworkInterface类或WMI.例如,您可以按类型过滤掉以删除环回和隧道接口.

实际使用的是哪个网络适配器,据我所知,它取决于您要发送的数据包的目标地址.网络适​​配器使用地址解析协议来检查它们是否可以到达desination IP和网关的MAC地址.

如此简短的回答; 没有默认的网络适配器.