[英]How to determine which network adapter is connected to the internet
我正在用C#编写一个程序,需要监控当前使用的互联网带宽量,以便在互联网使用率较低时进行后台上传。 如何自动确定哪个网络适配器是连接到互联网的?
当我在阅读此页面时 ,我找到了GetBestInterface函数,最后关注了MSDN的链接。 我能够用它来找到连接到互联网的适配器
您可以使用WMI查询所有适配器并查看连接的适配器。
本文将向您展示如何在VB.Net中执行此操作(非常容易转移到C#)。
检查路由表并查找具有默认路由(到0.0.0.0
的路由)的接口 - 这是连接到更广阔世界(如果有)的接口。
适配器可以通过多种方式显示为“连接到互联网”。 相反,它可能“无法连接到互联网”并仍然可以连接。
像生活中的许多事情一样,“布丁的证据就在吃”如果你想知道你是否有联系,你需要尝试与某事交谈。
我喜欢time.gov,因为它返回一小部分包含当前时间的XML,因此您可以确保实际连接到网络而不是获取某种缓存数据或重定向到强制网络门户。
只需循环访问适配器,看看哪些实际上有连接。
使用下面的代码片段获取当前活动的网络适配器。
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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.