我如何决定使用哪个IPv4地址

本文关键字:IPv4 地址 何决定 决定 | 更新日期: 2023-09-27 18:12:30

在有多个IPv4地址的环境中,如何选择侦听哪个地址?下面的代码我运气不佳:

foreach(IPAddress addr in Dns.GetHostAddresses(Dns.GetHostName()))
    if (addr.AddressFamily == AddressFamily.InterNetwork)
        if (!IPAddress.IsLoopback(addr))
            return addr.ToString();

因为它不认为以下接口适配器是环回地址:

Ethernet adapter loopback:
Connection-specific DNS Suffix  . : 
Description . . . . . . . . . . . : Microsoft Loopback Adapter
Physical Address. . . . . . . . . : XX.XX.XX.XX.XX.XX
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
Autoconfiguration IPv4 Address. . : 169.254.XXX.XXX(Preferred) 
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . : 
DNS Servers . . . . . . . . . . . : XXX: XXX: XXX:XXXX::XXX
                                    XXX: XXX: XXX:XXXX::XXX
                                    XXX: XXX: XXX:XXXX::XXX
NetBIOS over Tcpip. . . . . . . . : Enabled

我见过一些程序员假设存在一个名为"本地连接"的NetworkInterface,并且总是正确的接口,但我不认为这是正确的方法。

我如何决定使用哪个IPv4地址

我认为没有意义过滤接口,因为您可能在设备上有多个卡(以太网&例如Wifi)。如果您正在开发一个服务器组件,您肯定希望获得所有请求,无论它们使用什么接口。