1

ユーザーが希望するときに更新をチェックする WM 6.1 Prof. アプリケーションがあります。

サーバーへの接続を試みる前に、利用可能な接続 (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;
            }

}

4

1 に答える 1

1

接続マネージャーを切断しないでください。

Windows Mobile Connection Manager を使用するとすぐに、ネットワーク スタックへのプラグイン (Autobind Winsock Layered Service Provider) が、選択した宛先に対応するネットワーク インターフェイスへのネットワーク接続のバインドを自動的に開始します。基本的に、パケットが正しい方向に進むように強制します。切断を要求すると、まったく送信されない場合があります。

代わりに、更新サーバーに接続する前に Connect を呼び出し、完了したら RequestDisconnect を呼び出す必要があります。バックグラウンドで動作させたい場合は、非同期接続を使用して Connected イベントにアタッチします。

正しい宛先 (WiFi または GPRS) を選択して IE が行うことに従うには、ConnectionManager.MapUrl を使用して宛先 GUID を判別し、それを Connect に渡します。デフォルトのマッピング動作は次のとおりです。

  • URL のサーバー名の部分にドットがない場合、それは勤務先アドレスです
  • サーバー名の部分が例外のリストに表示される場合、それは勤務先アドレスです
  • それ以外の場合は、インターネット アドレスです。

その後の動作は、ActiveSync/Windows Mobile デバイス センターの設定方法、デバイスがクレードルに装着されているかどうか、[ネットワーク カードの接続先] で選択されている WiFi ([スタート] > [設定] > [接続] タブ > [ネットワーク カード] または [WiFi]) によって異なります。アイコン)。これが「Work」に設定され、マッピングが「The Internet」の場合、WiFi は使用されません。「インターネット」に設定されている場合、WiFi が関連付けられている場合は WiFi を使用し、関連付けられていない場合は GPRS にフォールバックします。

思い出すと、.NET CF の HttpWebRequest は自動的に接続マネージャーを使用し、宛先をマッピングする IE の動作に従うため、OpenNETCF クラスはまったく必要ない場合があります。

于 2010-07-13T10:22:05.013 に答える