C# 如何决定使用哪个IPv4地址?

C# 如何决定使用哪个IPv4地址?,c#,ip-address,C#,Ip Address,在具有多个IPv4地址的环境中,如何选择要侦听的地址?我在以下代码方面运气不好: foreach(IPAddress addr in Dns.GetHostAddresses(Dns.GetHostName())) if (addr.AddressFamily == AddressFamily.InterNetwork) if (!IPAddress.IsLoopback(addr)) return addr.ToString(); 因为它不认为

在具有多个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

我看到一些程序员认为名为“局域网连接”的
网络接口存在并且总是正确的接口,但我认为这不是正确的方法。

我认为没有意义过滤接口,因为一台设备上可能有多个卡(例如以太网和wifi)。如果你正在开发一个服务器组件,你肯定会想要得到所有的请求,不管它们使用什么接口。

我认为没有意义过滤接口,因为你可能在一个设备上有多个卡(例如以太网和wifi)。如果你正在开发一个服务器组件,你肯定会想要得到所有的请求,不管它们使用什么接口。

为什么不监听所有接口?这是大多数服务器应用程序所做的,除非它们被配置为其他方式。Heinzi++:)使用
IPAddress。在这种情况下,任何
作为IP地址。如果有疑问,请监听所有接口。如果您只需要某个IP地址,用户应该选择它(就像Wireshark中那样)。否则软件就无法知道它的意图。为什么不监听所有接口?这是大多数服务器应用程序所做的,除非它们被配置为其他方式。Heinzi++:)使用
IPAddress。在这种情况下,任何
作为IP地址。如果有疑问,请监听所有接口。如果您只需要某个IP地址,用户应该选择它(就像Wireshark中那样)。否则,软件无法知道其意图。