繁体   English   中英

在紧凑框架(C#)上激活GPRS连接

[英]Activate GPRS connection on compact framework (c#)

我正在使用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 { }
    }

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

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

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

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

谢谢约瑟夫! :)

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

 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");
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM