C# Windows Mobile Professional 6.1如何测试internet连接

C# Windows Mobile Professional 6.1如何测试internet连接,c#,windows-mobile,mobile,opennetcf,C#,Windows Mobile,Mobile,Opennetcf,我有一个WM 6.1 Prof.应用程序,可以在用户希望时检查更新 在尝试连接到服务器之前,我想检查是否有可用的连接(GPRS或Wifi) 我也在使用openNETCF.NET dll,这是我所做的,但不是每次都能用 我也不确定我应该使用哪种类型的连接,等等 好的,你觉得这样好吗 多谢各位 private static HttpWebRequest ConnectWeb(string urlx) { try { HttpWebRequest

我有一个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;
            }

}不要断开连接管理器的连接

使用Windows Mobile连接管理器后,网络堆栈(Autobind Winsock分层服务提供程序)的插件将开始自动将网络连接绑定到与所选目标相对应的网络接口。基本上,它强制数据包走正确的路。如果您请求断开连接,它可能根本不会发送它们

相反,您应该在尝试连接到更新服务器之前调用Connect,然后在完成连接后请求断开连接。如果希望在后台工作,请使用异步连接并附加到已连接的事件

要了解IE如何选择正确的目的地(WiFi或GPRS),请使用ConnectionManager.MapUrl确定目的地GUID,并将其传递到Connect。默认映射行为是:

  • 如果URL的服务器名称部分没有点,则为工作地址
  • 如果服务器名称部分出现在异常列表中,则它是一个工作地址
  • 否则,它就是一个互联网地址
然后,它会做什么取决于ActiveSync/Windows Mobile Device Center的设置方式,如果设备处于支架状态,以及在“我的网卡连接到”下为WiFi选择了什么(开始>设置>连接选项卡>网卡或WiFi图标)。如果设置为“工作”,并且映射为“互联网”,则永远不会使用WiFi。如果设置为“互联网”,则会使用相关的WiFi,如果没有,则返回GPRS


我记得,.NET CF的HttpWebRequest将根据IE映射目标的行为自动使用连接管理器,因此您可能根本不需要OpenNETCF类。

不要断开连接管理器的连接

使用Windows Mobile连接管理器后,网络堆栈(Autobind Winsock分层服务提供程序)的插件将开始自动将网络连接绑定到与所选目标相对应的网络接口。基本上,它强制数据包走正确的路。如果您请求断开连接,它可能根本不会发送它们

相反,您应该在尝试连接到更新服务器之前调用Connect,然后在完成连接后请求断开连接。如果希望在后台工作,请使用异步连接并附加到已连接的事件

要了解IE如何选择正确的目的地(WiFi或GPRS),请使用ConnectionManager.MapUrl确定目的地GUID,并将其传递到Connect。默认映射行为是:

  • 如果URL的服务器名称部分没有点,则为工作地址
  • 如果服务器名称部分出现在异常列表中,则它是一个工作地址
  • 否则,它就是一个互联网地址
然后,它会做什么取决于ActiveSync/Windows Mobile Device Center的设置方式,如果设备处于支架状态,以及在“我的网卡连接到”下为WiFi选择了什么(开始>设置>连接选项卡>网卡或WiFi图标)。如果设置为“工作”,并且映射为“互联网”,则永远不会使用WiFi。如果设置为“互联网”,则会使用相关的WiFi,如果没有,则返回GPRS


我记得,.NET CF的HttpWebRequest将根据IE映射目的地的行为自动使用连接管理器,因此您可能根本不需要OpenNETCF类。

感谢您的详细回答,我不会使用OpenNETCF,而是按照上面的方式编辑代码,谢谢你的长回答,我不打算使用opennetCF,而是按照上面的方式编辑代码,你可以检查是否可以抱歉,我如何标记为答案?对不起,我找不到那个选项,我怎么能把它标记为答案呢?我找不到那个选项