如何确定哪个网络适配器连接到Internet

时间:2010-01-31 19:20:29

标签: c# .net networking

我正在用C#编写一个程序,需要监控当前正在使用的互联网带宽量,以便在互联网使用率较低时进行后台上传。如何自动确定哪个网络适配器是连接到互联网的?

6 个答案:

答案 0 :(得分:4)

当我在this page找到GetBestInterface函数时,我最终关注了MSDN的链接。我能够用它来找到连接到互联网的适配器

答案 1 :(得分:3)

您可以使用WMI查询所有适配器并查看哪个适配器已连接 This article向您展示如何在VB.Net中执行此操作(非常容易转移到C#)。

答案 2 :(得分:3)

有关如何监控所使用的带宽的类似问题,请参阅here,但是理念是一样的! Here是另一个检查互联网连接的最快方法。

希望这有帮助, 最好的祝福, 汤姆。

答案 3 :(得分:3)

检查路由表并查找具有默认路由的接口(到0.0.0.0的路由) - 这是连接到更广阔世界的接口(如果有)。

答案 4 :(得分:0)

当适配器没有显示为“连接到互联网”时,有多种方式可以显示。相反,它可能“无法连接到互联网”并仍然可以连接。

像生活中的许多事情一样,“布丁的证据就在吃”如果你想知道你是否有联系,你就需要尝试与某事交谈。

我喜欢time.gov,因为它返回包含当前时间的一小部分XML,因此您可以确保实际连接到网络而不是获取某种缓存数据或重定向到强制网络门户。 / p>

只需循环访问适配器,看看哪些实际具有连接性。

答案 5 :(得分:0)

使用下面的代码片段获取当前的活动网络适配器。

using System.Net.NetworkInformation;
using System.Linq;

class Program
{
     static void Main(string[] args)
     {
        NetworkInterface networkInterface = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(o => o.OperationalStatus == OperationalStatus.Up && o.NetworkInterfaceType != NetworkInterfaceType.Tunnel && o.NetworkInterfaceType != NetworkInterfaceType.Loopback);
        if (networkInterface != null)
        {
            Console.WriteLine(networkInterface.Name);
        }
     }
}