WEB开发网
开发学院手机开发Windows Mobile 开发 Windows Mobile中如何建立GPRS连接以便Socket能正... 阅读

Windows Mobile中如何建立GPRS连接以便Socket能正常通信

 2010-08-22 12:42:00 来源:WEB开发网   
核心提示:Windows Mobile中如何建立GPRS连接以便Socket能正常通信作者:谢红伟最近编写一个医疗项目的程序,需要用 Windows Mobile 来做通信处理,Windows Mobile中如何建立GPRS连接以便Socket能正常通信,需要将手机端的数据通过GPRS传送至公网上的一个服务器上,数据传输我采用的

Windows Mobile中如何建立GPRS连接以便Socket能正常通信

作者:谢红伟

最近编写一个医疗项目的程序,需要用 Windows Mobile 来做通信处理,需要将手机端的数据通过GPRS传送至公网上的一个服务器上。数据传输我采用的是socket,用数据线+ActiveSync调试通过,数据传输正常,在准备将软件提交给质检部门的时候,用真正的GPRS来做通信测试时,问题出来了,连接始终建立不了,但用手机的IE浏览器却能正常打开网页,而且奇怪的是只要用IE浏览器成功访问过一次网页,我的 socket 就能正常进行数据通信,看来传说中的GPRS常连接被我误解了。

手机开通GPRS以后,我们的socket 程序还不能直接建立网络连接,需要用连接管理器来获取当前可用连接,并自动选择一个最佳的连接途径,然后启用这个连接,在连接启动成功以后再用socket 进行网络连接方可正常进行。大概GPRS拨号和连接过程就是在这里自动进行的吧。源代码中封装了一个连接管理的类和测试代码,可以清楚地看到Windows Mobile 在socket 编程之前到底需要做什么样的操作。

首先需要枚举当前可用的连接

void CConnectManager::EnumNetIdentifier ( OUT CStringArray &StrAry )

{

CONNMGR_DESTINATION_INFO networkDestInfo = {0};

// 得到网络列表

for ( DWORD dwEnumIndex=0; ; dwEnumIndex++ )

{

memset ( &networkDestInfo, 0, sizeof(CONNMGR_DESTINATION_INFO) );

if ( ConnMgrEnumDestinations ( dwEnumIndex, &networkDestInfo ) == E_FAIL )

{

break;

}

StrAry.Add ( networkDestInfo.szDescription );

}

}

接下来找到“Internet”这个连接,可用远程URL映射的方式来完成,这样可以让系统自动选取一个最好的连接。

int CConnectManager::MapURLAndGUID ( LPCTSTR lpszURL, OUT GUID &guidNetworkObject, OUT CString *pcsDesc/*=NULL*/ )

{

if ( !lpszURL || lstrlen(lpszURL) < 1 )

return FALSE;

memset ( &guidNetworkObject, 0, sizeof(GUID) );

int nIndex = 0;

HRESULT hResult = ConnMgrMapURL ( lpszURL, &guidNetworkObject,

1 2 3  下一页

Tags:Windows Mobile 如何

编辑录入:coldstar [复制链接] [打 印]
赞助商链接