我正在寻找 .net 中的活动 IPAddress,在这种情况下是与以太网适配器关联的地址。
现在我知道我可以使用以下方法获取当前分配给机器的 IP 列表:
IPHostEntry entry = Dns.GetHostEntry(Dns.GetHostName());
而且我知道我可以使用以下方法获得有关我的不同网络接口的大量信息:
NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
我可以使用 NetworkInterfaceType 枚举确定哪些接口是我的以太网接口,以及接口是否为“Up”,但我似乎找不到将此 NetworkInterface 绑定到相应 IPAddress 的方法。从 NetworkInterface 类中,我只能看到如何获取诸如任播地址或网关地址之类的东西,但没有任何东西可以帮助我缩小以太网 IP 的范围。
有谁知道这样做的方法,无论是简单的还是复杂的?
编辑:例如命令行上的 netstat 或 tracert 可以提供所有活动的网络连接。对我来说,.net 没有与此类似的东西似乎很奇怪,对我来说解析命令行结果似乎完全没有必要。GetBestInterface() 之类的东西似乎很有用,但它只会返回可以访问给定其他 IP 的 IP。同样,不是很通用。
如果没有其他方法可以使用 C# 来获取有效的 IPAdresses,那么就这样吧,我将使用命令行,但这似乎是一种流行的编程语言应该能够做到的事情。事实上,如果有人有 C++ 或 C 解决方案,我可以连接到我的 C# 应用程序,它也可以工作。