Si vous pouvez utiliser la Mangue (7.1) SDK, et si votre scénario implique l'utilisation de sockets, il existe un moyen trivial pour obtenir le NetworkInterfaceType/sous-type de l'information pour la connexion que vous venez de faire:
NetworkInterfaceInfo netInterfaceInfo = socket.GetCurrentNetworkInterface();var type = netInterfaceInfo.InterfaceType;var subType = netInterfaceInfo.InterfaceSubtype;
Pas besoin d'utiliser la NetworkInterface.NetworkInterfaceType propriété (qui notoirement prend 30sec de retour); pas besoin de déclencher une résolution de nom d'hôte simplement pour déterminer le type de réseau; pas besoin d'écouter de modification de réseau événements.
Bien sûr, cela fonctionne mieux en conjonction avec DeviceNetworkInformation.IsNetworkAvailable ou NetworkInterface.GetIsNetworkAvailable() - les appels de revenir immédiatement si vous êtes sur un réseau ou non. Si vous êtes, vous connectez la prise d'abord et de poser des questions lorsqu'il est connecté 🙂
Une dernière remarque: méfiez-vous de Mango DeviceNetworkInformation.IsWiFiEnabled - j'ai pensé qu'il serait de retour si j'étais sur un réseau wifi, mais à la place il retourne si le wifi est activé ou désactivé dans les paramètres du téléphone... pas super utile.
Je dirais la même chose pour DeviceNetworkInformation.IsCellularDataEnabled. Elle renvoie true, même s'il n'y a pas de carte sim dans le téléphone. On dirait que c'est seulement sur l'état de l'antenne, pas la connexion réelle. Comment obtenir une socket?
Comme de la Mangue version (beta 2 et RC), cette information est maintenant disponible, mais il vous oblige à prendre une connexion, sans doute parce qu'il ne vérifie pas jusqu'à ce que quelque chose a besoin d'elle.
Vous pouvez soit effectuer une résolution DNS (voir ci-dessous) ou utiliser le GetCurrentNetworkInterface WebRequest méthode d'extension, qui va lever une exception InvalidOperationException si la demande n'a pas encore connecté.
Il y a aussi quelques événements à suivre dans le Microsoft.Téléphone.Net.NetworkInformation espace de noms, mais je ne serais pas surpris si ces événements n'ont pas le feu jusqu'à ce qu'une connexion a été établie.
Fait intéressant, il semble que vous pouvez aussi préférer ou exiger que sur une fonction de la connexion à l'aide de la SetNetworkPreference et SetNetworkRequirement les méthodes d'extension, si elle ne veut pas aller au-delà de wifi vs cellulaire.
DeviceNetworkInformation.ResolveHostNameAsync(newDnsEndPoint("microsoft.com",80),newNameResolutionCallback(nrr =>{var info = nrr.NetworkInterface;var type = info.InterfaceType;var subType = info.InterfaceSubtype;}),null);
Malheureusement, l'api ne fournissent très peu d'informations sur le type de connexion réseau. Vous pouvez dire si vous êtes en 3G, Cellulaire ou Ethernet (c'est à dire une connexion USB à un PC), mais c'est toutes les informations que vous obtenez.
D'accéder au Réseau de Données pour windows phone app je.e il est connecté à une connexion ethernet, wifi ou réseau cellulaire aussi obtenir le sous-type je.e 2G ou 3g réseau programme suivant peut être utilisé.
Si vous pouvez utiliser la Mangue (7.1) SDK, et si votre scénario implique l'utilisation de sockets, il existe un moyen trivial pour obtenir le NetworkInterfaceType/sous-type de l'information pour la connexion que vous venez de faire:
Pas besoin d'utiliser la NetworkInterface.NetworkInterfaceType propriété (qui notoirement prend 30sec de retour); pas besoin de déclencher une résolution de nom d'hôte simplement pour déterminer le type de réseau; pas besoin d'écouter de modification de réseau événements.
Bien sûr, cela fonctionne mieux en conjonction avec DeviceNetworkInformation.IsNetworkAvailable ou NetworkInterface.GetIsNetworkAvailable() - les appels de revenir immédiatement si vous êtes sur un réseau ou non. Si vous êtes, vous connectez la prise d'abord et de poser des questions lorsqu'il est connecté 🙂
Une dernière remarque: méfiez-vous de Mango DeviceNetworkInformation.IsWiFiEnabled - j'ai pensé qu'il serait de retour si j'étais sur un réseau wifi, mais à la place il retourne si le wifi est activé ou désactivé dans les paramètres du téléphone... pas super utile.
Comment obtenir une socket?
OriginalL'auteur Omri Gazitt
prendre un coup d'oeil à de faux outils, ils ont de la classe PhoneNetworking pour cela:
http://wildermuth.com/2011/03/05/Phoney_Tools_Updated_(WP7_Open_Source_Library)
ses open source, vous pouvez vérifier le code source
OriginalL'auteur Robert
Comme de la Mangue version (beta 2 et RC), cette information est maintenant disponible, mais il vous oblige à prendre une connexion, sans doute parce qu'il ne vérifie pas jusqu'à ce que quelque chose a besoin d'elle.
Vous pouvez soit effectuer une résolution DNS (voir ci-dessous) ou utiliser le
GetCurrentNetworkInterface
WebRequest méthode d'extension, qui va lever une exception InvalidOperationException si la demande n'a pas encore connecté.Il y a aussi quelques événements à suivre dans le
Microsoft.Téléphone.Net.NetworkInformation
espace de noms, mais je ne serais pas surpris si ces événements n'ont pas le feu jusqu'à ce qu'une connexion a été établie.Fait intéressant, il semble que vous pouvez aussi préférer ou exiger que sur une fonction de la connexion à l'aide de la SetNetworkPreference et SetNetworkRequirement les méthodes d'extension, si elle ne veut pas aller au-delà de wifi vs cellulaire.
Les valeurs d'énumération pour
NetworkInterfaceType
(wi-fi/gsm) etNetworkInterfaceSubType
(edge/3g) sont disponibles sur le site MSDN.OriginalL'auteur Richard Szalay
Sans douille:
J'espère que c'est fixé maintenant.
OriginalL'auteur Cœur
Malheureusement, l'api ne fournissent très peu d'informations sur le type de connexion réseau. Vous pouvez dire si vous êtes en 3G, Cellulaire ou Ethernet (c'est à dire une connexion USB à un PC), mais c'est toutes les informations que vous obtenez.
Découvrez ce pour plus d'info Meilleure façon de vérifier une connexion réseau sur WP7
OriginalL'auteur 1adam12
D'accéder au Réseau de Données pour windows phone app je.e il est connecté à une connexion ethernet, wifi ou réseau cellulaire aussi obtenir le sous-type je.e 2G ou 3g réseau programme suivant peut être utilisé.
Ici, l'Interface et le SubInterface donne les informations sur le réseau.
OriginalL'auteur Nitesh Agrawal