标题
[wince/ppc/wininet] 【高分重新开贴】wininet和ConnMgr的问题 [已结贴,结贴人:sduz
clq
浏览(0) +
2009-03-28 14:21:37 发表
编辑
关键字:
http://topic.csdn.net/u/20080429/18/cc1b12df-10a8-4d58-a6dd-67e76e6d487a.html 【高分重新开贴】wininet和ConnMgr的问题 [已结贴,结贴人:sduzhou] 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 揭帖率:69.23% * 发表于:2008-04-29 18:13:11 楼主 这个问题搞了好久了,也没搞定,比较急 希望大家帮下忙,谢谢 另外感谢zipper_zhao 和lenux对我的问题的耐心解答 我要实现的是windows mobile手机(多普达710)通过GPRS与公网的http服务器连接并进行数据交互 目前的做法 1.先通过ConnMgr函数建立GPRS连接,具体代码也是参照以前的帖子写的 应该已经建立成功,在执行完ConnMgrEstablishConnectionSync,手机信号会显示G符号并提示登陆 2.使用wininet函数与服务器建立连接 InternetOpen(L"client2.exe",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL, 0);成功 接下来如果(1)调用InternetOpenUrl返回却出现12002超时错误 InternetOpenUrl(hOpenHandle,L"http://219.239.132.234/index.htm",NULL,0,INTERNET_FLAG_RAW_DATA,0)) 如果(2)在InternetOpen之后不调用InternetOpenUrl而依次调用InternetConnect,HttpOpenRequest均成功,但接着调用HttpSendRequest出现12002或者12029(ERROR_INTERNET_CANNOT_CONNECT The attempt to connect to the server failed) 错误 补充:上述wininet函数当手机通过activeSync连接时,可以通过pc的网络连到服务器上。 另 ConnMgrEstablishConnectionSync怎样建立一个IID_DestNetWAP的连接?好像我建立的时候一直失败 我好想只能建立IID_DestNetInternet的连接。 问题点数:100 回复次数:16 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * zipper_zhao * * 等级: * 可用分等级:贫农 * 总技术专家分:308 * 总技术专家分排名:54124 * 发表于:2008-04-29 20:56:071楼 得分:20 通过ActiveSync连接可以正常访问说明WinInet没什么大问题. 这里怀疑你的GPRS连接的代理有问题.你建立的IID_DestNetWAP连接的GUID是什么?建立的是Internet连接还是WAP连接?如果是WAP连接,需要你查看一下proxy里的配置是否正确.另外再提醒一下,IID_DestNetWAP指定的meta-network是否已经事先配置过了,微软的Windows Mobile默认是只配了4个meta-network,常有的是Internet网络和WAP网络两个. 如果定义的IID_DestNetWAP连接与系统默认的一致,检查一下你的卡是否能连上GPRS(包括cmnet和cmwap两种),在使用PPC上的ping工具ping一下你的服务器看是否可达,在服务器上抓取数据包分析出错原因. 祝你好运... 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * lenux * 冀冀他爸 * 等级: * 可用分等级:富农 * 总技术专家分:13216 * 总技术专家分排名:1274 * 3 4 发表于:2008-04-30 09:46:562楼 得分:20 CONNMGR_CONNECTIONINFO connection; ZeroMemory(&connection, sizeof(connection)); connection.cbSize = sizeof(connection); connection.dwParams = CONNMGR_PARAM_GUIDDESTNET; connection.dwFlags = CONNMGR_FLAG_PROXY_HTTP; connection.dwPriority = CONNMGR_PRIORITY_USERBACKGROUND; connection.bExclusive = FALSE; connection.bDisabled = FALSE; connection.guidDestNet = IID_DestNetInternet; *pConnStatus = CONNMGR_STATUS_UNKNOWN; hr = ConnMgrEstablishConnectionSync(&connection,&g_hConnection, /*INFINITE*/120*1000, pConnStatus); 我用的配置,能上网操作,正常 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * caowenbin * wenbin * 等级: * 可用分等级:掌柜 * 总技术专家分:3177 * 总技术专家分排名:6700 * 发表于:2008-04-30 09:58:203楼 得分:10 ConnMgrMapURL(Url,&guidNetworkObject,&dwIndex; CONNMGR_CONNECTIONINFO ccInfo; memset(&ccInfo,0,sizeof(CONNMGR_CONNECTIONINFO)); ccInfo.cbSize=sizeof(CONNMGR_CONNECTIONINFO); ccInfo.dwParams=CONNMGR_PARAM_GUIDDESTNET|CONNMGR_PARAM_MINRCVBW; //ccInfo.dwFlags=CONNMGR_FLAG_PROXY_HTTP; ccInfo.dwPriority=CONNMGR_PRIORITY_USERINTERACTIVE; ccInfo.guidDestNet=guidNetworkObject; ccInfo.ulMaxCost=CONNMGR_PARAM_MAXCOST; ccInfo.ulMinRcvBw=CONNMGR_PARAM_MINRCVBW; ccInfo.ulMaxConnLatency=CONNMGR_PARAM_MAXCONNLATENCY; ConnMgrEstablishConnectionSync(&ccInfo,&g_hConnection,dwTimeout,&dwStatus); 我用的这个,用的是CMNET或CDMA 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 10:01:494楼 得分:0 谢谢ls 1.通过打印出来的信息看,通过GPRS建立的连接时GUID为connmgr.h里定义的IID_DestNetInternet DEFINE_GUID(IID_DestNetInternet, 0x436ef144, 0xb4fb, 0x4863, 0xa0, 0x41, 0x8f, 0x90, 0x5a, 0x62, 0xc5, 0x72); 这样还需要配置proxy吗? 2.卡本身用IE通过cmnet和cmwap都可以连到服务器以及其他网站 3.我用的是samrtphone,没有ping工具。能不能帮忙提供一个ping工具。 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 10:55:325楼 得分:0 网上下了个Ping for Smartphone 1.0不管用 数据线连接时连主机都ping不同 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 11:35:296楼 得分:0 搞了个ppc的ping工具,凑合可以用 ActiveSync连接时,ping主机可以ping通 ping服务器或者其他网站时,第一次ping通,以后都超时 断开后就直接ping不通了 我想问题可能出在ip的问题上 ActiveSync连上手机ip为169.254.2.1(正常) 断开手机ip为127.0.0.1(正常) 用ConnMgrEstablishConnectionSync建立连接后 ip为10.13.218.145之类的局域网ip 10.13.218.145这种ip可以连到公网吗? 怎样才能使手机获得公网的IP呢? 谢谢大家 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * comiunknown * bobcy * 等级: * 可用分等级:中农 * 总技术专家分:859 * 总技术专家分排名:31976 * 发表于:2008-04-30 11:49:487楼 得分:0 你注意过出现错误12002或者12029时,手机的GPRS接入点是cmnet还是cmwap吗?如果是cmwap的话,类似的错误我碰到过,当时的原因是ConnMgrEstablishConnectionSync()成功后获取的hConnection在后面使用时被我提前释放造成的。 还有,如何判断你的手机GPRS接入点时,应该这样写: PROXY_CONFIG pcProxy = {0}; hr = ConnMgrProviderMessage(m_hConnection, &IID_ConnPrv_IProxyExtension, NULL, 0, 0, (PBYTE)&pcProxy, sizeof(pcProxy)); if (hr == S_OK) m_hOpen = InternetOpen(TEXT("WceHttp"), INTERNET_OPEN_TYPE_PROXY, pcProxy.szProxyServer, NULL, 0); else m_hOpen = InternetOpen(TEXT("WceHttp"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 11:57:098楼 得分:0 我的应该是cmnet接入点把,调用ConnMgrProviderMessage后都是进E_NOINTERFACE分支。 hr = ConnMgrProviderMessage( hConnection, &IID_ConnPrv_IProxyExtension, NULL, 0, 0, (PBYTE)&pcProxy, sizeof(pcProxy)); if (S_OK == hr) { dwAccessType = INTERNET_OPEN_TYPE_PROXY; AfxMessageBox(L"S_OK"); } else if (E_NOINTERFACE == hr) { dwAccessType = INTERNET_OPEN_TYPE_DIRECT; AfxMessageBox(L"E_NOINTERFACE"); } HINTERNET hOpenHandle = InternetOpen(L"client2.exe", dwAccessType , NULL,NULL, 0); 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * comiunknown * bobcy * 等级: * 可用分等级:中农 * 总技术专家分:859 * 总技术专家分排名:31976 * 发表于:2008-04-30 13:57:369楼 得分:0 你确定InternetOpen()返回的hOpenHandle在InternetOpenUrl()中使用时是不为NULL的吗? 如果确定hOpenHandle不为空,第一次调用InternetOpenUrl()如果返回错误,错误号是12002或者12029时,再重复尝试调用InternetOpenUrl()2~3次,看看是不是还是有一样的错误。有可能是网络忙,你要连接的url地址暂时访问超时造成的,深圳这边的 GPRS网络在每天下午6:30~7:30时出问题,连接速度极慢,并且掉线。 确定都不是这些原因的话,把你的: InternetOpenUrl(hOpenHandle,L"http://219.239.132.234/index.htm",NULL,0,INTERNET_FLAG_RAW_DATA,0)) 改成: InternetOpenUrl(hOpenHandle,L"http://219.239.132.234 /index.htm",NULL,0,INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE,0)) 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 15:43:3110楼 得分:0 InternetOpen()已经判断了,不为空。 重复尝试调用InternetOpenUrl和改参数都不管用 用Network Analyzer for Windows Mobile分析了一下结果片段如下 看到下面结果就更蒙了, 明明是基于GUID IID_DestNetInternet上的连接,Adapter Name还是WWAN1-CMWAP-1??!! 然后我又建立IID_DestNetWAP的连接,结果ConnMgrProviderMessage判断时,进的还是E_NOINTERFACE == hr分支?? Network Analyzer running... +++ AnalyzerIPconfig.dll +++ Windows IP configuration Ethernet adapter Local Area Connection: IP Address ........ : 10.13.107.155 Subnet Mask ....... : 255.255.255.0 IP Address ........ : fe80::224c:4fff:fe43:414c Default Gateway ... : 10.13.107.100 Adapter Name ...... : WWAN1-CMWAP-1 Description ....... : WWAN1-cmwap-1 Adapter Index ..... : 720898 Address............ : 20 4c 4f 43 41 4c DHCP Enabled....... : YES DHCP Server........ : 10.13.107.156 Primary WinsServer : Secondary WinsServer: Lease obtained on : Wednesday, April 30 ,2008 11 : 45 : 27 Lease expires on : Friday, May 30 ,2008 11 : 45 : 27 AutoConfig Enabled : YES Tunnel adapter []: Interface Number .. : 4 Tunnel adapter [6to4 Pseudo-Interface]: Interface Number .. : 3 Tunnel adapter [Automatic Tunneling Pseudo-Interface]: Interface Number .. : 2 IP Address ........ : fe80::5efe:10.13.107.155 Host name.......... : dopod710 Domain Name........ : DNS Servers........ : 221.130.33.52 //DNS有了,这个还令人满意 221.130.33.60 NODETYPE........... : 8 Routing Enabled.... : NO // Proxy Enabled...... : NO //路由和代理选项貌似有问题 Test Module Result: True --- AnalyzerIPconfig.dll --- Network Analyzer挺好用的,工具下载地址ppc和sm版的都有: http://www.microsoft.com/downloads/details.aspx?familyid=081c6401-49d4-4506-a03b-c41bc76c2f51&displaylang=en 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-04-30 18:24:0211楼 得分:0 up,希望高人指点 问题跟下帖一样 http://topic.csdn.net/u/20071117/17/4f67031b-a6a9-4f71-8aef-b46970c98905.html 代理这样设置行不 因为ConnMgrProviderMessage没有返回代理信息,没法使用ConnMgrProviderMessage返回的参数 InternetOpen(L"client2.exe",INTERNET_OPEN_TYPE_PROXY,NULL,L"10.0.0.172:80", 0); 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-05-04 10:08:3512楼 得分:0 有人恶意刷屏,bs up一下 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * comiunknown * bobcy * 等级: * 可用分等级:中农 * 总技术专家分:859 * 总技术专家分排名:31976 * 发表于:2008-05-04 11:58:2513楼 得分:50 你确定现在用的cmwap接入?是的话 InternetOpen(L"client2.exe",INTERNET_OPEN_TYPE_PROXY,L"10.0.0.172:80", NULL, 0); 还有前面的连接代码有个地方要修改: cmnet的写法是: CONNMGR_CONNECTIONINFO connection; ZeroMemory(&connection, sizeof(connection)); connection.cbSize = sizeof(connection); connection.dwParams = CONNMGR_PARAM_GUIDDESTNET; connection.dwFlags = CONNMGR_FLAG_PROXY_HTTP; connection.dwPriority = CONNMGR_PRIORITY_USERBACKGROUND; connection.bExclusive = FALSE; connection.bDisabled = FALSE; connection.guidDestNet = IID_DestNetInternet; cmwap的稍微有些不同: CONNMGR_CONNECTIONINFO connection; ZeroMemory(&connection, sizeof(connection)); connection.cbSize = sizeof(connection); connection.dwParams = CONNMGR_PARAM_GUIDDESTNET; connection.dwFlags = CONNMGR_FLAG_PROXY_HTTP | CONNMGR_FLAG_PROXY_WAP | CONNMGR_FLAG_PROXY_SOCKS4 | CONNMGR_FLAG_PROXY_SOCKS5; connection.dwPriority = CONNMGR_PRIORITY_USERBACKGROUND; connection.bExclusive = FALSE; connection.bDisabled = FALSE; connection.guidDestNet = IID_DestNetInternet; 还有,cmwap接入成功之后,用InternetOpenUrl()访问某个web页面,第一次访问得到服务器返回的是WML,即我们用的 10.0.0.172代理服务器response回来的信息,我们还要重新InternetOpenUrl()要访问的web页面一次,这次 response回来的才是该web页面的html源码。手机上用PIE访问估计做过相应的处理,所以我们看不到WML,我们自己的程序则要手工处理 WML。 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * sduzhou * * 等级: * 可用分等级:贫农 * 总技术专家分:67 * 总技术专家分排名:109702 * 发表于:2008-05-04 12:30:3814楼 得分:0 问题解决了,就是InternetOpen代理参数的问题 InternetOpen(L"client2.exe",INTERNET_OPEN_TYPE_PROXY,L"10.0.0.172:80", NULL, 0); 谢谢ls 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * l1w1w1 * 阿伟 * 等级: * 可用分等级:富农 * 总技术分:323 * 总技术分排名:46321 * 发表于:2009-03-18 12:05:5915楼 得分:0 up一下 修改 删除 举报 引用 回复 进入用户个人空间 加为好友 发送私信 在线聊天 * leiounasi * 该用户很懒,没有设置昵称 * 等级: * 可用分等级:短工 * 总技术分:0 * 总技术分排名:338017 * 发表于:2009-03-19 15:25:4516楼 得分:0 求解~现在用的是模拟器,通过ActiveSync可以让模拟器浏览网页了~但是用程序链接的时候始终报错,如果 hOpen = InternetOpen(TEXT("CeHttp"),INTERNET_OPEN_TYPE_PRECONFIG,NULL,0,0); 这样那么if(!(hRequest = InternetOpenUrl(hOpen,lpszServer,NULL,0,INTERNET_FLAG_RELOAD,0))) { int error = GetLastError(); } 错误为12029 The attempt to connect to the server failed. 如果是安装楼上两位所说hOpen = InternetOpen(L"CeHttp",INTERNET_OPEN_TYPE_PROXY,L"10.0.0.172:80", NULL, 0); 设置代理的话 那么if(!(hRequest = InternetOpenUrl(hOpen,lpszServer,NULL,0,INTERNET_FLAG_RELOAD,0))) { int error = GetLastError(); } 的错误为12031.ERROR_INTERNET_CONNECTION_RESET:The connection with the server has been reset. 用Network Analyzer for Windows Mobile分析了一下结果片段如下: Network Analyzer running... +++ AnalyzerIPconfig.dll +++ Windows IP configuration PPP Adapter [Serial over DMA]: IP Address ........ : 192.168.55.101 Subnet Mask ....... : 255.255.255.0 IP Address ........ : 192.168.55.100 Default Gateway ... : 10.13.107.100 Adapter Name ...... : Serial over DMA Description ....... : Adapter Index ..... : 2 Address............ : 00 00 00 00 00 DHCP Enabled....... : NO Tunnel adapter []: Interface Number .. : 4 Tunnel adapter [6to4 Pseudo-Interface]: Interface Number .. : 3 Tunnel adapter [Automatic Tunneling Pseudo-Interface]: Interface Number .. : 2 IP Address ........ : fe80::5efe:192.168.55.101 Host name.......... : WM_zn Domain Name........ : redmond.corp.micosoft.com DNS Servers........ : 127.0.0.1 NODETYPE........... : 8 Routing Enabled.... : NO Proxy Enabled...... : NO Test Module Result: True --- AnalyzerIPconfig.dll --- 求达人指点一二~~~~~ 修改 删除 举报 引用 回复 将帖子提前 放进我的网摘 推荐给好友 我要提问 帖子加分 结贴去... 管理菜单 网站简介|广告服务|银行汇款帐号|联系方式|诚聘英才|English|版权声明|问题报告 北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号 世纪乐知(北京)网络技术有限公司 提供技术支持 文明办网文明上网举报电话:13552009689 Copyright © 1999-2009, CSDN.NET, All Rights Reserved GongshangLogo 个人空间 add friend send message blog 帐号:comiunknown 昵称:bobcy 最新帖子: 1. 请教该如何写存储过… 2. 明年市场上可能出现… 3. 请问可以通过代码清… 更多帖子... close abc推荐给好友
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.