资源描述:
《gprs开发系列文章之进阶篇》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、GPRS开发系列文章之进阶篇 在前篇《GPRS开发系列文章之入门篇》里,我主要对GPRS开发中遇到的一些常用概念和一些业务逻辑做了简单的介绍,没想到得到了很多网友的支持和关注,因昨天有事因此延迟到今天才奉上这篇进阶系列文章,还请各位见谅。希望大家支持同时欢迎拍砖,共同提高。 在最后一篇《GPRS开发系列文章之实战篇》我将详细叙述如何利用类库开发Client和Server端通信程序,因此本文的多数讲解将是为下文服务的。本文将向您介绍基于PPC2003的anager系列API,客户端在进行GPRS拨号连接时将使用下文所介绍的API
2、。 ConnectionManager(本人译为连接管理器,此对象为一系列API的集合)系列API的主要目的是为了集中管理基于grEnumDestinations(intnIndex,CONNMGR_DESTINATION_INFO*pDestInfo); 一般我们的PDA在连接GPRS时都有好几个连接,利用此函数我们可以枚举出所有可用的连接,然后再对挑选的连接进行筛选得到一个最佳连接 接下来讲两个很重要的函数,我们将利用两个函数中的一个来发起连接,他们是: d) ConnMgrEstablishConnecti
3、on()和ConnMgrEstablishConnectionSync()函数,这两个函数一个用于发起一个异步连接请求,一个用于同步请求,使用异步连接请求我们可以在发起连接后立即返回,而使用同步请求客户端将一直被阻塞知道函数返回确认连接,关于异步和同步我就不再叙述; 它们的原型依次为: HRESULTgrEstablishConnection(CONNMGR_CONNECTIONINFO*pConnInfo,HANDLE*phConnection); HRESULTgrEstablishConnectionSync( CO
4、NNMGR_CONNECTIONINFO*pConnInfo,HANDLE*phConnection, DaxCost; ULONGulMinRcvBFiles为:(0x436ef144,0xb4fb,0x4861234下一页——感谢阅读这篇文章,..,3,0xa0,0x41,0x8f,0x90,0x5a,0x62,0xc5,0x72) CMACHINEmConnMgr],如下图所示: 在Destinations一项中就对应我们所有可用的网络连接,这个跟用ConnMgrEnumDestinations()方法得到的是一样
5、的效果,在默认Inter设置中我们将看到CM的GUID,如下所示: 在这里里面有DestId一项,就对应着我们久违的GUID e) ConnMgrReleaseConnection函数 我们在上一步中建立连接后我们将得到一个连接句柄,在重新开始一个新的连接或者断开连接都要调用此函数来释放掉之前创建的连接,它的原型为: HRESULTgrReleaseConnection(HANDLEhConnection,BOOLbCache); 【连接管理API大致使用步骤】: 首先我们利用ConnMgrApiReadyE
6、vent()函数来确认是否有可用连接,如果有可用连接我们则利用ConnMgrEnumDestinations()函数枚举所有可用连接,然后遍历所有连接调用我们的同步或异步连接方法ConnMgrEstablishConnectionSync()与ConnMgrEstablishConnection()来发起连接,一旦连接成功后我们就可以进行我们伟大的下一步了,就是和我们的服务器进行通信。 【GPRSdemo效果图】 【GPRSDemo介绍】 GPRSDemo主要利用了上述的几个重要的API函数来获取当前可用连接,并自动选择一个
7、最佳的连接途径,然后启用这个连接,在连接启动成功以后再用socket进行网络连接,与公网服务器进行通信。 首先检查是否有可用连接BOOL CConnectManager::GetConnMgrAvailable(){ HANDLE hConnMgr = ConnMgrApiReadyEvent (); BOOL bAvailbale = FALSE; DGR_DESTINATION_INFO Index=0; ; dIndex++ ) { memset ( Destinations ( dI
8、ndex, p;guidNetemset ( guidNetp;guidNetworkObject, (DWOR上一页1234下一页——感谢阅读这篇文章,..,D*)nIndex ); if ( FAILED(hResult) ) {