2010-07-13 79 views
1

我有一個WM 6.1 Prof.應用程序,用於在用戶希望這樣做時檢查更新。Windows Mobile Professional 6.1如何測試網絡連接

我想在連接服務器之前檢查是否有任何可用的連接(GPRS或Wifi)。

我也使用這裏openNETCF.NET DLL是我做了什麼,但它不能正常工作,每次,

也是我不知道我應該使用哪種類型的連接等。

好的,你認爲這是好嗎?

非常感謝!

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

對不起,我如何標記爲答案?我無法找到該選項 – Spring 2010-07-28 12:28:18

回答

0

請不要斷開連接管理器。

只要您使用Windows Mobile連接管理器,網絡堆棧(Autobind Winsock分層服務提供程序)的插件就會自動將網絡連接綁定到與所選目標對應的網絡接口。基本上,它強制數據包走向正確的路。如果您要求斷開連接,它可能根本不會發送它們。

相反,您應該在嘗試連接到更新服務器之前調用Connect,然後在完成後請求RequestDisconnect。如果您希望它在後臺工作,請使用異步連接並連接到Connected事件。

要按照IE的選擇正確的目的地 - WiFi或GPRS - 使用ConnectionManager.MapUrl來確定目標GUID,並將其傳遞到Connect。默認的映射行爲是:

  • 如果該URL的服務器名稱部分有沒有點,這是一個工作地址
  • 如果服務器名稱的一部分出現在例外列表中,這是一個工作地址
  • 否則,它是一個互聯網地址

那麼,什麼它取決於上的ActiveSync/Windows Mobile設備中心是如何設置的,如果設備插入底座,並在「我的網卡連接到」選定的內容,適用於WiFi(開始>設置>連接選項卡>網卡或WiFi圖標)。如果這設置爲「工作」並且映射是「互聯網」,它將永遠不會使用WiFi。如果它設置爲'互聯網',它將使用WiFi(如果相關的話),如果不相關則返回GPRS。我記得,.NET CF的HttpWebRequest會自動利用連接管理器,遵循IE的映射目標的行爲,所以你可能根本不需要OpenNETCF類。

+0

感謝您的長答案,我不會使用opennetCF,而是我編輯了上面的代碼,您可以檢查是否可以 – Spring 2010-07-13 11:20:55