Langage: HTML | XAML

Comment récupérer des informations de connexion réseau (XAML)

Applies to Windows and Windows Phone

Cette rubrique montre comment récupérer les informations de connectivité et d’utilisation pour les connexions réseau d’un appareil, à l’aide des classes de l’espace de noms Windows.Networking.Connectivity.

Prérequis

Les exemples suivants utilisent C# ou C++ et reposent sur l’exemple d’informations réseau. Pour obtenir une aide générale sur la création d’une application Windows Runtime en C# ou Visual Basic, voir Créer votre première application Windows Runtime en C# ou Visual Basic. Pour obtenir une aide générale sur la création d’une application Windows Runtime en C++, voir Créer votre première application Windows Runtime en C++.

Qu’est-ce qu’un profil de connexion ?

Un objet ConnectionProfile représente une connexion réseau particulière établie sur un périphérique. Les informations accessibles dans un objet ConnectionProfile peuvent être utilisées pour déterminer le niveau de connectivité actuel, effectuer le suivi de l’utilisation des données ou identifier la carte réseau utilisée par une connexion. Si votre application Windows Runtime est inscrite pour être informée des modifications apportées aux propriétés de ConnectionProfile, une fois connectée, elle peut effectuer les choix appropriés quand elle adapte son comportement aux modifications d’un environnement réseau. Pour plus d’informations, voir Comment gérer les événements de connexion réseau et les changements de disponibilité.

Dans des scénarios plus spécifiques, comme celui d’applications connectées pour les appareils mobiles qui sont souvent itinérants et fonctionnent sur des connexions réseau limitées, un objet ConnectionProfile offre des informations sur le coût et le forfait données qui peuvent être utilisées pour éviter des frais de service opérateur imprévus. Pour plus d’informations, voir Comment gérer les contraintes liées au coût des connexions réseau limitées.

Chaque ConnectionProfile permet d’accéder aux informations de connexion suivantes :

DonnéesFournies parDescription

Coût de connexion

ConnectionCost

Informations détaillées sur le coût, notamment des informations sur la limite de données et l’itinérance.

Type de coût

NetworkCostType

Type de coût du réseau actuellement utilisé par la connexion.

Statut et utilisation du forfait données

DataPlanStatus, DataPlanUsage

Informations d’utilisation spécifiques au forfait données associé à la connexion.

Utilisation locale

NetworkUsage

Informations d’utilisation de la connexion locale.

Carte réseau

NetworkAdapter

Carte réseau qui assure la connectivité de la connexion.

Propriétés de connexion WLAN et WWAN

WlanConnectionProfileDetails

WwanConnectionProfileDetails

Fournit des détails supplémentaires propres aux profils de connexion WLAN et WWAN.

 

Récupération de profils de connexion

La classe NetworkInformation est une classe statique qui définit les méthodes utilisées par votre application pour récupérer un ConnectionProfile. La classe NetworkInformation définit deux méthodes de récupération d’un ConnectionProfile. Si vous devez uniquement retourner le profil associé à la connexion Internet, utilisez la méthode GetInternetConnectionProfile.

Vous devez écrire du code capable de gérer les exceptions au moment où vous appelez la plupart des méthodes réseau asynchrones. En outre, les méthodes de l’espace de noms Windows.Networking.Connectivity qui récupèrent ConnectionProfile peuvent lever des exceptions. Votre gestionnaire d’exceptions peut récupérer des informations plus détaillées sur la cause de l’exception dans le but d’analyser l’échec et de prendre des décisions appropriées. Pour plus d’informations, voir Comment gérer les exceptions dans les applications réseau.



    //Get the Internet connection profile
    string connectionProfileInfo = string.Empty;
    try {
        ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

        if (InternetConnectionProfile == null) {
            NotifyUser("Not connected to Internet\n");
        }
        else {
            connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile);
            NotifyUser("Internet connection profile = " +connectionProfileInfo);
        }
    }
    catch (Exception ex) {
        NotifyUser("Unexpected exception occurred: " + ex.ToString());
    }



Si vous souhaitez récupérer les profils de toutes les connexions (notamment la connexion Internet), utilisez la méthode GetConnectionProfiles.



    // Get all connection profiles
    string connectionProfileList = string.Empty;
    try {
        var ConnectionProfiles = NetworkInformation.GetConnectionProfiles();
        foreach (var connectionProfile in ConnectionProfiles) {
            //Display Profile information for each of the connection profiles
            connectionProfileList += GetConnectionProfile(connectionProfile);
            connectionProfileList += "--------------------------------------------------------------------\n";
        }
            NotifyUser("Internet connection profile = " +connectionProfileList);
    }
    catch (Exception ex) {
        NotifyUser("Unexpected exception occurred: " + ex.ToString());
    }


Accès aux informations depuis un profil de connexion

L’exemple de code suivant appelle des méthodes sur ConnectionProfile pour récupérer des informations sur l’état de la connexion réseau, le coût de la connexion et le statut du forfait données. La méthode GetConnectionCost sur ConnectionProfile récupère les informations ConnectionCost pour le profil. La méthode GetDataPlanStatus sur ConnectionProfile récupère les informations DataPlanStatus pour le profil. D’autres méthodes sur ConnectionProfile peuvent récupérer des informations sur un réseau local sans fil lorsque le profil de connexion utilise le Wi-Fi ou des informations sur un réseau étendu sans fil lorsque le profil de connexion utilise le haut débit mobile.


//Get some ConnectionProfile information
//
string GetConnectionProfile(ConnectionProfile connectionProfile)
{
    string connectionProfileInfo = string.Empty;
    if (connectionProfile != null) {
        connectionProfileInfo = "Profile Name : " + connectionProfile.ProfileName + "\n";

        switch (connectionProfile.GetNetworkConnectivityLevel()) {
            case NetworkConnectivityLevel.None:
                connectionProfileInfo += "Connectivity Level : None\n";
                break;
            case NetworkConnectivityLevel.LocalAccess:
                connectionProfileInfo += "Connectivity Level : Local Access\n";
                break;
            case NetworkConnectivityLevel.ConstrainedInternetAccess:
                connectionProfileInfo += "Connectivity Level : Constrained Internet Access\n";
                break;
            case NetworkConnectivityLevel.InternetAccess:
                connectionProfileInfo += "Connectivity Level : Internet Access\n";
                break;
        }

        switch (connectionProfile.GetDomainConnectivityLevel()) {
            case DomainConnectivityLevel.None:
                connectionProfileInfo += "Domain Connectivity Level : None\n";
                break;
            case DomainConnectivityLevel.Unauthenticated:
                connectionProfileInfo += "Domain Connectivity Level : Unauthenticated\n";
                break;
            case DomainConnectivityLevel.Authenticated:
                connectionProfileInfo += "Domain Connectivity Level : Authenticated\n";
                break;
        }

        //Get Connection Cost information
        ConnectionCost connectionCost = connectionProfile.GetConnectionCost();
        connectionProfileInfo += GetConnectionCostInfo(connectionCost);

        //Get Dataplan Status information
        DataPlanStatus dataPlanStatus = connectionProfile.GetDataPlanStatus();
        connectionProfileInfo += GetDataPlanStatusInfo(dataPlanStatus);
                
    }
    return connectionProfileInfo;
}

// Get ConnectionCost information for a profile
string GetConnectionCostInfo(ConnectionCost connectionCost)
{
    string cost = string.Empty;
    cost += "Connection Cost Information: \n";
    cost += "====================\n";

    if (connectionCost == null) {
        cost += "Connection Cost not available\n";
        return cost;
    }

    switch (connectionCost.NetworkCostType) {
         case NetworkCostType.Unrestricted:
             cost += "Cost: Unrestricted";
             break;
         case NetworkCostType.Fixed:
             cost += "Cost: Fixed";
             break;
         case NetworkCostType.Variable:
             cost += "Cost: Variable";
             break;
         case NetworkCostType.Unknown:
             cost += "Cost: Unknown";
             break;
         default:
             cost += "Cost: Error";
             break;
     }
     cost += "\n";
     cost += "Roaming: " + connectionCost.Roaming + "\n";
     cost += "Over Data Limit: " + connectionCost.OverDataLimit + "\n";
     cost += "Approaching Data Limit : " + connectionCost.ApproachingDataLimit + "\n";

     return cost;
}

// Get DataPlanStatus information for a profile
string GetDataPlanStatusInfo(DataPlanStatus dataPlan)
{
    string dataplanStatusInfo = string.Empty;
    dataplanStatusInfo = "Dataplan Status Information:\n";
    dataplanStatusInfo += "====================\n";

    if (dataPlan == null) {
        dataplanStatusInfo += "Dataplan Status not available\n";
        return dataplanStatusInfo;
    }
            
    if (dataPlan.DataPlanUsage != null) {
        dataplanStatusInfo += "Usage In Megabytes : " + dataPlan.DataPlanUsage.MegabytesUsed + "\n";
        dataplanStatusInfo += "Last Sync Time : " + dataPlan.DataPlanUsage.LastSyncTime + "\n";
    }
    else {
        dataplanStatusInfo += "Usage In Megabytes : Not Defined\n";
    }

    ulong? inboundBandwidth = dataPlan.InboundBitsPerSecond;
    if (inboundBandwidth.HasValue) {
        dataplanStatusInfo += "InboundBitsPerSecond : " + inboundBandwidth + "\n";
    }
    else {
        dataplanStatusInfo += "InboundBitsPerSecond : Not Defined\n";
    }

    ulong? outboundBandwidth = dataPlan.OutboundBitsPerSecond;
    if (outboundBandwidth.HasValue) {
        dataplanStatusInfo += "OutboundBitsPerSecond : " + outboundBandwidth + "\n";
    }
    else {
        dataplanStatusInfo += "OutboundBitsPerSecond : Not Defined\n";
    }

    uint? dataLimit = dataPlan.DataLimitInMegabytes;
    if (dataLimit.HasValue) {
        dataplanStatusInfo += "DataLimitInMegabytes : " + dataLimit + "\n";
    }
    else {
        dataplanStatusInfo += "DataLimitInMegabytes : Not Defined\n";
    }

    System.DateTimeOffset? nextBillingCycle = dataPlan.NextBillingCycle;
    if (nextBillingCycle.HasValue) {
        dataplanStatusInfo += "NextBillingCycle : " + nextBillingCycle + "\n";
    }
    else {
        dataplanStatusInfo += "NextBillingCycle : Not Defined\n";
    }

    uint? maxTransferSize = dataPlan.MaxTransferSizeInMegabytes;
    if (maxTransferSize.HasValue) {
        dataplanStatusInfo += "MaxTransferSizeInMegabytes : " + maxTransferSize + "\n";
    }
    else {
        dataplanStatusInfo += "MaxTransferSizeInMegabytes : Not Defined\n";
    }
    return dataplanStatusInfo;
}

Récapitulatif

Dans cette rubrique, nous avons vu comment récupérer des profils de connexion et les informations de connectivité que chaque profil contient. L’utilisation de ces informations pour aider votre application à faire les bons choix est essentielle pour garantir la fiabilité de l’expérience connectée.

Pour obtenir des instructions supplémentaires ou les meilleures pratiques préconisées pour l’utilisation des informations de connexion pour guider le comportement de votre application réseau, voir Comment gérer les événements de connexion réseau et les changements de disponibilité.

Rubriques associées

Autre
Créer votre première application Windows Runtime en C# ou Visual Basic
Créer votre première application Windows Runtime en C++
Comment gérer les exceptions dans les applications réseau
Comment gérer les contraintes liées au coût des connexions réseau limitées
Comment gérer les événements de connexion réseau et les changements de disponibilité
Comment récupérer des informations de carte réseau et de localité
Comment récupérer des données d’utilisation de connexion réseau
Référence
ConnectionCost
ConnectionProfile
DataPlanStatus
NetworkInformation
Windows.Networking.Connectivity
Exemples
Exemple d’informations réseau
Exemple d’arrière-plan d’état du réseau

 

 

Afficher:
© 2015 Microsoft