Как определить, какой сетевой адаптер подключен к интернету - PullRequest
6 голосов
/ 31 января 2010

Я пишу программу на C #, которая должна отслеживать объем используемой в настоящее время полосы пропускания интернета, чтобы она могла выполнять фоновую загрузку при низком использовании интернета. Как я могу автоматически определить, какой сетевой адаптер подключен к Интернету?

Ответы [ 6 ]

4 голосов
/ 31 января 2010

Я закончил переходить по ссылке на MSDN, когда читал эту страницу , где я нашел функцию GetBestInterface . Я смог использовать это, чтобы найти адаптер, подключенный к Интернету

3 голосов
/ 01 февраля 2010

Изучите таблицу маршрутизации и найдите интерфейсы, которые имеют маршрут по умолчанию (маршрут к 0.0.0.0) - это ваш интерфейс (ы), которые подключены к более широкому миру (если есть).

3 голосов
/ 31 января 2010

См. здесь для аналогичного вопроса о том, как контролировать используемую пропускную способность в VB.NET, но философия та же! Здесь - это еще один вопрос, который является самым быстрым способом проверки интернет-соединения.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

3 голосов
/ 31 января 2010

Вы можете использовать WMI для запроса всех адаптеров и посмотреть, какой из них подключен.
В этой статье показано, как это сделать в VB.Net (очень легко переносится на C #).

0 голосов
/ 06 июля 2019

используйте приведенный ниже фрагмент кода для получения текущего активного сетевого адаптера.

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);
        }
     }
}
0 голосов
/ 29 июня 2016

Существует несколько способов, которыми адаптер может отображаться как «подключенный к Интернету», если это не так. И наоборот, возможно, что он «не подключен к Интернету» и все еще будет подключен.

Как и многие вещи в жизни, «доказательство того, что пудинг находится в еде». Если вы хотите знать, что вы на связи, вам нужно попытаться с чем-то поговорить.

Мне нравится time.gov, так как он возвращает крошечный кусок XML, содержащий текущее время, так что вы можете убедиться, что вы на самом деле подключаетесь к сети и не получаете какие-то кэшированные данные или не перенаправляете на портал авторизации. 1005 *

Просто прокрутите адаптеры и посмотрите, какие из них действительно имеют связь.

...