- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
GPRS连接
GPRS开发系列文章之进阶篇(Windows?Mobile)1. 客户端建立GPRS连接 API 主要讲解的类库为Connection Manager 系列API,客户端在进行GPRS拨号连接时将使用下文所介绍的API。 Connection Manager(本人译为连接管理器,此对象为一系列API的集合) 系列API的主要目的是为了集中管理基于Windows Mobile系列的设备网络连接的建立与维护。移动应用程序使用连接管理器API去建立或规划一个网络连接,而连接管理器则掌控连接过程中的所有状态信息.应用程序在要发起一个连接(比如Internet),只要简单的告知连接管理器就OK了。 当一个应用程序发起一个网络连接的请求时,连接管理器首先从连接服务提供商(CSPS)处获取所有可能的连接信息,然后连接管理器会从这一系列连接信息中根据开销,延迟、带宽等因素来选择一个最佳的连接,最后连接管理器将被请求的连接排入队列,然后在一个适合的时间使用CSPS来建立连接。 【API函数】:a) ConnMgrApiReadyEvent()函数 函数原型:HANDLE WINAPI ConnMgrApiReadyEvent(); 利用此函数来我们可以返回一个连接事件的句柄,注意在的得到句柄后要记得及时释放 b) ConnMgrConnectionStatus()函数 函数原型:HRESULT WINAPI ConnMgrConnectionStatus(HANDLE hConnection,DWORD * pdwStatus ); 利用此函数的返回值pdwStatus,我们可以得到很多的关于连接的信息,例如如果我们连接成功将返回CONNMGR_STATUS_CONNECTED,断开连接将返回CONNMGR_STATUS_DISCONNECTED,他的返回状态信息非常丰富,有14中之多,完全可以满足我们的应用需要; c) ConnMgrEnumDestinations()函数 函数原型:HRESULT WINAPI ConnMgrEnumDestinations(int nIndex,CONNMGR_DESTINATION_INFO * pDestInfo ); 一般我们的PDA在连接GPRS时都有好几个连接,利用此函数我们可以枚举出所有可用的连接,然后再对挑选的连接进行筛选得到一个最佳连接 接下来讲两个很重要的函数,我们将利用两个函数中的一个来发起连接,他们是: d) ConnMgrEstablishConnection()和ConnMgrEstablishConnectionSync()函数,这两个函数一个用于发起一个异步连接请求,一个用于同步请求,使用异步连接请求我们可以在发起连接后立即返回,而使用同步请求客户端将一直被阻塞知道函数返回确认连接,关于异步和同步我就不再叙述; 它们的原型依次为:HRESULT WINAPI ConnMgrEstablishConnection( CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection ); HRESULT WINAPI ConnMgrEstablishConnectionSync( CONNMGR_CONNECTIONINFO * pConnInfo, HANDLE * phConnection, DWORD dwTimeout, DWORD * pdwStatus ); 可以看到两个函数的第一个参数都为一个CONNMGR_CONNECTIONINFO对象,此对象为一个结构体,它保存了客户端发起连接请求的一系列信息,因此,在我们调用此函数时必须构造一个该对象,然后将其作为参数传入连接函数中。这里很有必要讲一下该结构体,该结构体的原型如下:typedef struct _CONNMGR_CONNECTIONINFO { DWORD cbSize; DWORD dwParams;DWORD dwFlags;DWORD dwPriority;BOOL bExclusive;BOOL bDisabled;GUID guidDestNet;HWND hWnd; UINT uMsg; LPARAM lParam;ULONG ulMaxCost; ULONG ulMinRcvBw; ULONG ulMaxConnLatency;} CONNMGR_CONNECTIONINFO; 其中参数dwFlags用于指定我们的接入点,比如我们常说的CMNER和CMWAP,而参数GUID则标志了我们对应于每个接入点的全球唯一标志符,关于如何得到或者查看GUID,我们可以在“\Program Files\Windows C
文档评论(0)