Windows Mobile GPRS连接网络

今天,测试了在手机上通过GPRS连接服务器,这个问题搞了我几天,今天终于算连上去了,想想其中的过程,还真是百感交集(怎么感觉有点像在写作文! -_-!)。
在电脑上,socket中connect是可以直接就连上服务器的,但是这个思路在手机下就不行了,手机中的系统不似电脑一样,当你有联接请求的时候,会自动帮你启动网络功能。在手机中你必须自已打开联接管理,自已选择 对应的接入方式(CMWAP/CMNET),当把这些设好之后,调用 ConnMgrEstablishConnectionSync 打开网络,然后你的socket才能够工作。在mobile中,打开的联接操作如下:
GUID   IID_DestNetWAP   =   {   0x7022e968,   0x5a97,   0x4051,   0xbc,   0x1c,   0xc5,   0x78,   0xe2,   0xfb,   0xa5,   0xd9};
    CONNMGR_CONNECTIONINFO  pConnInfo;
    memset(&pConnInfo, 0, sizeof(CONNMGR_CONNECTIONINFO));

    pConnInfo.cbSize=sizeof(CONNMGR_CONNECTIONINFO);
    pConnInfo.dwParams=CONNMGR_PARAM_GUIDDESTNET;
    pConnInfo.dwFlags=CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5;
    pConnInfo.dwPriority=CONNMGR_PRIORITY_USERINTERACTIVE;
    pConnInfo.bExclusive=FALSE;
    pConnInfo.bDisabled=FALSE;
    pConnInfo.hWnd=m_hWnd;
    pConnInfo.guidDestNet= IID_DestNetWAP;

    DWORD pdwStatus=0;
    HRESULT hr=ConnMgrEstablishConnectionSync(&pConnInfo, &m_wapHandle, 10000, &pdwStatus);
    if(hr == S_OK)
    {
        return true;
    }
    else
    {
        return false;
    }
当然,你写的时候,可以查看对应的MSDN文档。不过值得一提的是,我包含了里面的头文件和库文件:
#define INITGUID
#include <connmgr.h>
在工程中添加cellcore.lib,编译的时候,还是提示我IID_DestNetWAP无法解释的外部符号(真是呕吐!!)。
后来查找了一下,发现要添加GUID   IID_DestNetWAP   =   {   0x7022e968,   0x5a97,   0x4051,   0xbc,   0x1c,   0xc5,   0x78,   0xe2,   0xfb,   0xa5,   0xd9};在这儿指出来,希望对有像我遇到相同问题的人有个帮助。
    打开了手机联接之后,你就可以像在电脑上一样,操控你的socket了(当然,手机中的socket还是与电脑上有很些不同的)。
    最后附上截获的中国移动最呕心的拦截页面的数据格式,希望对有后台自动处理这个拦截页面的人能提供点帮助!:)
 
HTTP/1.1 200 OK, Success
Content-length: 917
Content-Type: text/vnd.wap.wml;charset=UTF-8
Date: Sat, 29 Sep 2007 06:54:38 GMT
Pragma: no-cache
Server: WebLogic Server 8.1 SP3 Tue Jun 29 23:11:19 PDT 2004 404973 with CRs:
Cache-Control: no-store, no-cache, must-revalidate, max-age=0

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"><wml><head><meta http-equiv="Cache-Control" content="max-age=0" forua="true" /><meta http-equiv="Cache-Control" content="no-cache" forua="true" /><meta http-equiv="Cache-Control" content="must-revalidate" forua="true" /></head><card title=""><p>中国移动提醒您:继续浏览网页将产生GPRS通信费,确认请点击<br/><a href='/?t=78781'>/</a><br/>您可以选择取消本提醒服务,取消后再登陆本网站将不会收到该提示页面。<br/>                                          <a href="http://218.200.249.249/usercancelservlet?fr=0&amp;ou=%2F">取消提醒</a>                                                                         <br/>如需查询GPRS通信费标准,请拨打10086,包月客户仍按原套餐资费标准收费。</p></card></wml>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值