web-dev-qa-db-fra.com

Comment vérifier le type de connectivité Internet dans Universal Windows Platform

Je souhaite vérifier le type de connectivité Internet dans l'application universelle Windows.

  1. Pas connecté
  2. Connecté via WLAN (WiFi)
  3. Connecté via WWAN (Cellular Data)
  4. Connecté à un réseau mesuré

afin de fournir une option pour télécharger du contenu de grande taille. Et ressentez également les changements importants de disponibilité du réseau.

Actuellement, je ne peux que vérifier si Internet est connecté ou non à l'aide de la méthode GetIsNetworkAvailable de la classe NetworkInterface.

NetworkInterface.GetIsNetworkAvailable();
23
Vineet Choudhary

1. Vérifier la disponibilité de la connexion Internet

Pour vérifier si Internet est connecté ou non, utilisez la méthode GetIsNetworkAvailable de la classe NetworkInterface.

bool isInternetConnected = NetworkInterface.GetIsNetworkAvailable();

GetIsNetworkAvailable () -
Résumé: Indique si une connexion réseau est disponible.
Renvoie: true si une connexion réseau est disponible; sinon, false.


2. Vérifier la disponibilité de la connexion Internet via WWLN (WiFi)

Pour vérifier si une connexion Internet via WWAN utilise la propriété IsWlanConnectionProfile de la classe ConnectionProfile

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

IsWlanConnectionProfile
Résumé: Obtient une valeur qui indique si le profil de connexion est une connexion WLAN (WiFi). Cela détermine si WlanConnectionProfileDetails est nul ou non.
Renvoie: Indique si le profil de connexion représente une connexion WLAN (WiFi).


3. Vérifier la disponibilité de la connexion Internet via WWAN (mobile)

Pour vérifier si une connexion Internet via WWAN utilise la propriété IsWwanConnectionProfile de la classe ConnectionProfile

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

IsWwanConnectionProfile
Résumé: Obtient une valeur qui indique si le profil de connexion est une connexion WWAN (mobile). Cela détermine si WwanConnectionProfileDetails est nul ou non.
Renvoie: Indique si le profil de connexion représente une connexion WWAN (mobile).

Référence
Réponse Hippiehunter


4. Vérifiez le réseau mesuré

Pour vérifier si Internet est accessible via une connexion mesurée ou non, utilisez la méthode GetConnectionCost sur la classe NetworkInterface.

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

Référence (Réponse plus détaillée ici)
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- extrait-1


5. Gérer les changements de disponibilité du réseau

Pour détecter les changements importants de disponibilité du réseau, utilisez l'événement NetworkStatusChanged de la classe NetworkInformation

// 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 = "";
}

Références
https://developerinsider.co/check-internet-connectivity-in-uwp/https://msdn.Microsoft.com/en-us/library/ windows/apps/xaml/jj835820.aspxhttps://msdn.Microsoft.com/en-us/library/windows/apps/xaml/hh452991.aspx


J'espère que cela sera utile à quelqu'un.

46
Vineet Choudhary

J'utilise NetworkInformation.GetInternetConnectionProfile().IsWlanConnectionProfile et IsWwanConnectionProfile. Si ni l'un ni l'autre n'est true, cela devrait signifier que vous êtes sur Ethernet ou quelque chose comme ça.

Gardez à l'esprit queGetInternetConnectionProfile() peut retourner null et peut faussement retourner qu'il y a une connexion Internet active lorsque la connexion est active mais DHCP a échoué.

4
Hippiehunter