0
在C#程序我正在使用的所有适配器的信息: NetworkInterface.GetAllNetworkInterfaces()如何在使用NetworkInterface.GetAllNetworkInterfaces()时确定主适配器?
但是,我怎么确定哪一个是主适配器?我原本以为它是索引号最低的适配器,但似乎并非如此。
在C#程序我正在使用的所有适配器的信息: NetworkInterface.GetAllNetworkInterfaces()如何在使用NetworkInterface.GetAllNetworkInterfaces()时确定主适配器?
但是,我怎么确定哪一个是主适配器?我原本以为它是索引号最低的适配器,但似乎并非如此。
如果我理解正确,您是否在寻找通过其建立连接的活动适配器? 我这样做:
string currentAdapter = "";
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) {
if (ni.OperationalStatus == OperationalStatus.Up
&& ni.NetworkInterfaceType != NetworkInterfaceType.Tunnel
&& ni.NetworkInterfaceType != NetworkInterfaceType.Loopback) {
currentAdapter = (ni.Name);
}
}
什么是 “主适配器”,根据你?每个启用了IP的适配器都可能参与流量。您可能在寻找的是接口连接指标(如IPConnectionMetric中的WMI类['Win32_NetworkAdapterConfiguration'](https://msdn.microsoft.com/library/aa394217)所示)。据我所知,'System.Net.NetworkInformation'无法检索。 –
@JeroenMostert谢谢你的回复。例如,假设您有两个适配器,它们都连接到互联网。如果启动Internet Explorer,它如何选择使用哪个适配器? –
它不会,这是在IE以下的水平。 IE简单地询问DNS解析器的网站IP地址,然后开始发送数据包。这些数据包最终取决于哪个适配器取决于路由表(命令行中的'route print'),并且依次来自目标网络和接口度量标准。 (IE实际上有几个“设置互联网”的东西和代理覆盖,所以这并不完全准确,但这是网络应用程序的一般故事,它没有做任何特别的事情)。一个应用程序最终可能会结束使用多个适配器。 –