【问题标题】:Activate GPRS connection on compact framework (c#)在紧凑框架上激活 GPRS 连接(c#)
【发布时间】:2014-04-16 18:45:02
【问题描述】:

我正在用 C# (.NET3.5 Compact Framework) 开发一个应用程序,我需要偶尔通过 GPRS 连接到一个 sql 服务器。但是,在一段时间不活动或 PDA 放在底座上时,连接会关闭。

我正在寻找一种从应用程序自动检查并重新启用连接的方法。

我在网络上看到几个页面建议使用 ConnectionManager、Opennet.CF 框架或基于 XML 文档的方法。没有一个提供完整的例子。

我最近的测试是基于下面的代码。

你能帮我一些建议或代码吗?

非常感谢,

菲利普

public static void setCM_ProxyEntriesHTTP(Guid Guid)
    {
        try
        {
            remCM_ProxyEntries(getCM_ProxyEntriesAtual());
            string wWap = "<wap-provisioningdoc>" +
            "<characteristic type=\"CM_ProxyEntries\">" +
            "<characteristic type=\"HTTP-{" + Guid.ToString() + "}\">" +
            "<parm name=\"ExtraInfo\" value=\"\" />" +
            "<parm name=\"Override\" value=\"\" />" +
            "<parm name=\"Username\" value=\"\" />" +
            "<parm name=\"Enable\" value=\"1\" />" +
            "<parm name=\"Type\" value=\"0\" />" +
            "<parm name=\"DestId\" value=\"{436EF144-B4FB-4863-A041-8F905A62C572}\" />" +
            "<parm name=\"SrcId\" value=\"{" + Guid.ToString() + "}\" />" +
            "</characteristic>" +
            "</characteristic>" +
            "</wap-provisioningdoc>";
            ConfigWrapper.ProcessXml(wWap);
        }
        catch { }
    }

【问题讨论】:

    标签: c# compact-framework gprs


    【解决方案1】:

    通常你不需要关心连接,只要你的请求触发了连接管理器。因此,在执行 SQL 查询或连接之前,请在已知的、可重新访问的服务器上执行 http 请求。该 http 请求将触发连接管理器打开连接。连接管理器将管理连接。

    如果长时间没有数据流动,连接管理器 (CM) 将关闭连接,除非您配置了“始终在线”连接。可以使用 wap 配置 xml 文件为连接配置“Alwas on”。与您编写的类似 xml(对您的需求无用):http://msdn.microsoft.com/en-us/library/bb737329.aspx

    在我使用 ftp 编写的应用程序中需要触发 CM 的技巧。在我可以打开一个 ftp 连接之前,我必须做一个 http 请求(到 google.com)。 FTP连接请求不会触发CM,sql请求也不会触发。

    因此,在您的代码中首先执行 http 请求并等待或重复直到成功,然后发出您的 sql 连接请求。 -或者- 配置“始终在线”连接(如果您与互联网提供商签订了统一数据速率合同)。

    【讨论】:

      【解决方案2】:

      谢谢约瑟夫! :)

      我能够使用以下代码进行检查和连接:

       private static bool InternetAvailable2()
          {
              bool hasNet = false;
              try
              {
                  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"http://www.bing.com");
                  request.Method = "GET";
                  request.Accept = "text/html, application/xhtml+xml, */*";
                  request.Proxy = null;
                  //request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";
                  using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                  {
                      if (response.StatusCode == HttpStatusCode.OK)
                      {
                          hasNet = true;
                      }
                  }
              }
              catch (Exception ex)
              {
                  MessageBox.Show(ex.Message,"NetAvail2");
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多