2010-07-13 6 views
1

J'ai une application WM 6.1 Prof. qui vérifie les mises à jour lorsque l'utilisateur le souhaite.Windows Mobile Professional 6.1 comment tester la connexion Internet

Je souhaite vérifier s'il existe une connexion disponible (GPRS ou Wifi) avant de tenter de se connecter au serveur.

J'utilise aussi dll openNETCF.NET est ici ce que je l'ai fait, mais cela ne fonctionne pas à chaque fois,

aussi je ne suis pas sûr quel type de connexion dois-je utiliser et ainsi.

D'après vous, est-ce bon?

Merci beaucoup!

private static HttpWebRequest ConnectWeb(string urlx) 
    { 

     try 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(urlx)); 

      request.ContentType = @"application/octet-stream"; 
      request.Credentials = CredentialCache.DefaultCredentials; 
      request.Timeout(6000); 
      return request; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(Lang.CONNECTIONPROBLEM); 
      return null; 
     } 
    } 


    private bool downloadTest() 
    { 

     Stream stream; 
     HttpWebResponse response; 
     HttpWebRequest request = ConnectWeb(FileManager.url); 
     if (request!=null) 
     { 
      try 
      { 

       using (response = (HttpWebResponse)request.GetResponse()) 
       { 

        using (stream = response.GetResponseStream()) 
        { 
         byte[] data = ReadFully(stream, (int)response.ContentLength); 
         writeByteArrayToFile(data, "data.zip");           
        }     
       } 

       response.Close(); 
       stream.Close(); 

      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(Lang.CONNECTIONPROBLEM); 
       return false; 
      } 

}

+0

Désolé, que puis-je marquer comme réponse? Je ne pouvais pas trouver cette option – Spring

Répondre

0

Ne débranchez pas votre gestionnaire de connexion. Dès que vous utilisez le Gestionnaire de connexion Windows Mobile, un plug-in de la pile réseau (Autobind Winsock Layered Service Provider) démarre automatiquement la liaison de vos connexions réseau à l'interface réseau correspondant à la destination choisie. Fondamentalement, cela force les paquets à aller dans le bon sens. Si vous demandez une déconnexion, il se peut qu'ils ne les envoient pas du tout. Au lieu de cela, vous devez appeler Connect avant d'essayer de vous connecter à votre serveur de mise à jour, puis RequestDisconnect une fois que vous avez terminé. Utilisez une connexion asynchrone et attachez-la à l'événement Connected si vous voulez que cela fonctionne en arrière-plan.

Pour suivre ce que fait IE lors du choix de la bonne destination (WiFi ou GPRS), utilisez ConnectionManager.MapUrl pour déterminer le GUID de destination et transmettez-le dans Connect. Le comportement de mappage par défaut est:

  • Si la partie serveur nom de l'URL n'a pas de points, il est une adresse de travail
  • Si la partie serveur nom apparaît dans la liste des exceptions, il est une adresse de travail
  • Sinon, il est une adresse Internet

ce qu'il fait alors dépend de mobile Device Center ActiveSync/Windows est configuré, si l'appareil est bercé, et ce qui est sélectionné sous « Ma carte réseau se connecte à », pour le WiFi (Démarrer> Paramètres> onglet Connexions> Cartes réseau ou icône WiFi). Si cette option est définie sur "Travail" et que le mappage est "Internet", il n'utilisera jamais le Wi-Fi. S'il est réglé sur "Internet", il utilisera le WiFi s'il est associé et retombera dans GPRS si ce n'est pas le cas. Si je me souviens bien, HttpWebRequest de .NET CF utilisera automatiquement le gestionnaire de connexion, suivant le comportement d'IE de mappage de la destination, de sorte que vous n'aurez peut-être pas du tout besoin de la classe OpenNETCF.

+0

Merci pour votre longue réponse, je ne vais pas utiliser opennetCF, à la place j'ai modifié le code comme ci-dessus, vous pouvez vérifier si c'est ok – Spring

Questions connexes