2009-11-17 4 views

Répondre

0

Vous pouvez essayer d'ouvrir votre connexion en cas de besoin. Si cela échoue, affichez un message d'erreur. Si vous avez vraiment besoin d'une vérification générale (par exemple, au démarrage de l'application), vous pouvez également essayer d'envoyer des requêtes HTTP à un ou plusieurs sites Web omniprésents, tels que google.com. (Ou quel que soit le protocole que vous entendez par "internet").

Découvrez HttpWebRequest.

+0

J'ai besoin quelque chose de similaire à l'API InternetGetConnectedState dans les fenêtres –

+0

HttpWebRequest parfois bloqué par pare-feu –

2

Si c'est une application de bureau, vous pouvez interroger NetworkManager (qui est le gestionnaire de connexion réseau sur la plupart des bureaux Linux) sur d-bus, en utilisant la bibliothèque NDesk.DBus.

Voir Banshee pour un exemple: http://git.gnome.org/cgit/banshee/tree/src/Core/Banshee.Services/Banshee.Networking/NetworkManager.cs

+0

En fait, la plupart des fichiers dans ce répertoire sont probablement vous intéresser: http://git.gnome.org/cgit/banshee /tree/src/Core/Banshee.Services/Banshee.Networking/ par exemple, Wicd est un autre gestionnaire de réseau raisonnablement commun qui peut également être consulté via dbus. –

1

En dehors de ce que Michael a déjà suggéré pour une application de bureau, vous pouvez aussi faire quelque chose comme:

foreach (NetworkInterface ni in NetworkInformation.GetAllNetworkInterfaces()) { 
     // Check that any or all of: 
     //  -ni.OperationalStatus == OperationalStatus.Up 
     //  -that ni.NetworkInterfaceType is ethernet or wireless80211 
     //  -ni.GetIPProperties() has a gateway and a DNS server 
     // ... 
} 
1

Peu importe ce que vous retrouvez à l'aide, il a gagné ne soyez pas fiable. Je vois tout le temps avec Windows Vista et 7 à la maison. J'utilise un réseau domestique, donc mes ordinateurs sont toujours "connectés". Cependant, ils ne sont pas toujours connectés à Internet. Cela dit, je recommande de vérifier les interfaces réseau comme l'a dit Gonzalo. C'est votre meilleur pari.

Je ne compterais pas sur NetworkManager étant présent. Je déteste cette chose et l'éteins quand je le peux. Il est énorme, disgracieux, a un nom moche, repose sur des déchets comme HAL et DBUS. Les premières versions me rebutaient définitivement parce qu'elles ne marchaient pas à moins d'être connecté à une interface graphique. Il a également collecté des bogues pour le wifi qui étaient complètement ridicules dans un système d'exploitation open-source qui aurait dû corriger les bogues d'origine. Cela a conduit à d'autres gestionnaires wifi et la ligne de commande ne pas être en mesure de fonctionner correctement et les gens ont dit d'utiliser NetworkManager, seulement parce que personne ne s'est jamais occupé de réparer le bug réel!

Questions connexes