Как проверить тип подключения к Интернету в универсальной платформе Windows

Я хочу проверить тип подключения к Интернету в Windows Universal Application.

  • Не подключен
  • Подключено через WLAN (WiFi)
  • Подключено через WWAN (сотовые данные)
  • Подключено к доработанной сети

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

В настоящее время я могу проверить, подключен ли интернет или нет, используя метод GetIsNetworkAvailable класса NetworkInterface.

NetworkInterface.GetIsNetworkAvailable();

Ответы

Ответ 1

1. Проверить доступность подключения к Интернету

Чтобы проверить, подключен ли Интернет или не использует метод GetIsNetworkAvailable класса NetworkInterface.

bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();

GetIsNetworkAvailable() -
Сводка: Указывает, доступно ли какое-либо сетевое подключение.
Возвращает: true, если доступно сетевое соединение; в противном случае false.


2. Проверьте доступность подключения к Интернету через WWLN (WiFi)

Чтобы проверить, подключен ли к интернету через WWAN IsWlanConnectionProfile свойство ConnectionProfile class

ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWlanConnectionProfile;

IsWlanConnectionProfile
Сводка: Получает значение, указывающее, является ли профиль подключения WLAN (WiFi). Это определяет, действительно ли WlanConnectionProfileDetails - null.
Возвращает: Указывает, является ли профиль подключения WLAN (WiFi).


3. Проверьте доступность подключения к Интернету через WWAN (мобильный)

Чтобы проверить, подключен ли интернет через WWAN, используйте свойство IsWwanConnectionProfile класса ConnectionProfile

ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
bool isWLANConnection = (InternetConnectionProfile == null)?false:InternetConnectionProfile.IsWwanConnectionProfile;

IsWwanConnectionProfile
Сводка: Получает значение, указывающее, является ли профиль подключения WWAN (мобильным) соединением. Это определяет, является ли WwanConnectionProfileDetails нулевым.
Возвращает: Указывает, представляет ли профиль подключения WWAN (мобильное) соединение.

Ссылка
Ответ на Hippiehunter


4. Проверить измеренную сеть

Чтобы проверить, доступен ли доступ в Интернет через дозируемое соединение или нет, используйте метод GetConnectionCost в классе NetworkInterface.

var connectionCost = NetworkInformation.GetInternetConnectionProfile().GetConnectionCost();
if (connectionCost.NetworkCostType == NetworkCostType.Unknown 
        || connectionCost.NetworkCostType == NetworkCostType.Unrestricted)
{
    //Connection cost is unknown/unrestricted
}
else
{
   //Metered Network
}

Ссылка (более подробный ответ здесь)
1. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/JJ835821(v=win.10).aspx
2. https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.networking.connectivity.networkcosttype.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1


5. Управление изменениями доступности сети

Чтобы оценить существенные изменения доступности сети, используйте событие NetworkStatusChanged NetworkInformation class

// register for network status change notifications
 networkStatusCallback = new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
 if (!registeredNetworkStatusNotif)
 {
     NetworkInformation.NetworkStatusChanged += networkStatusCallback;
     registeredNetworkStatusNotif = true;
 }

async void OnNetworkStatusChange(object sender)
{
    // get the ConnectionProfile that is currently used to connect to the Internet                
    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

    if (InternetConnectionProfile == null)
    {
        await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            rootPage.NotifyUser("Not connected to Internet\n", NotifyType.StatusMessage);
        });
    }
    else
    {
        connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
        await _cd.RunAsync(CoreDispatcherPriority.Normal, () =>
        {
            rootPage.NotifyUser(connectionProfileInfo, NotifyType.StatusMessage);
        });
    }
    internetProfileInfo = "";
}

Ссылки
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj835820.aspx https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx http://www.developerinsider.in/2016/03/13/check-internet-connectivity-in-uwp/


Надеюсь, что это поможет кому-то.

Ответ 2

Я использую NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile и IsWwanConnectionProfile. Если ни один true, это означает, что вы находитесь в сети Ethernet или что-то в этом роде.

Имейте в виду, что GetInternetConnectionProfile() может возвращать значение null и может ошибочно возвращать, что есть активное интернет-соединение, когда соединение активно, но сбой DHCP.