2017-06-07 19 views
0

在C#程序我正在使用的所有适配器的信息: NetworkInterface.GetAllNetworkInterfaces()如何在使用NetworkInterface.GetAllNetworkInterfaces()时确定主适配器?

但是,我怎么确定哪一个是主适配器?我原本以为它是索引号最低的适配器,但似乎并非如此。

+0

什么是 “主适配器”,根据你?每个启用了IP的适配器都可能参与流量。您可能在寻找的是接口连接指标(如IPConnectionMetric中的WMI类['Win32_NetworkAdapterConfiguration'](https://msdn.microsoft.com/library/aa394217)所示)。据我所知,'System.Net.NetworkInformation'无法检索。 –

+0

@JeroenMostert谢谢你的回复。例如,假设您有两个适配器,它们都连接到互联网。如果启动Internet Explorer,它如何选择使用哪个适配器? –

+0

它不会,这是在IE以下的水平。 IE简单地询问DNS解析器的网站IP地址,然后开始发送数据包。这些数据包最终取决于哪个适配器取决于路由表(命令行中的'route print'),并且依次来自目标网络和接口度量标准。 (IE实际上有几个“设置互联网”的东西和代理覆盖,所以这并不完全准确,但这是网络应用程序的一般故事,它没有做任何特别的事情)。一个应用程序最终可能会结束使用多个适配器。 –

回答

0

如果我理解正确,您是否在寻找通过其建立连接的活动适配器? 我这样做:

string currentAdapter = ""; 

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) { 
    if (ni.OperationalStatus == OperationalStatus.Up 
     && ni.NetworkInterfaceType != NetworkInterfaceType.Tunnel 
     && ni.NetworkInterfaceType != NetworkInterfaceType.Loopback) { 
     currentAdapter = (ni.Name); 
    } 
} 

This solution was found here

相关问题