如何在程序中GPRS wap代理上internet

xw1980xw 2006-07-31 11:51:57
我在eVC下开发smartphone 开发联网应用,在高手的指导下通过GPRS上cmnet,但是我的移动梦网就上不了,我在程序退出是release connect 但是右边那个G图标还在。我想移动梦网是wap网关,我的程序不是,如果中途退出,那wap就上不了,反之一样 。我想现在通过wap代理访问http来通信,这样就不存在两者的切换问题,但是在程序中应怎么写,哪位高手知道?
...全文
494 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuterain 2006-08-01
  • 打赏
  • 举报
回复
#include <wininet.h>
#include <initguid.h>
#include <connmgr.h>
#include <connmgr_proxy.h>
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))

// pszDestAddr: The URL you would like to connect to: i.e. http://www.microsoft.com
//
extern "C"
HRESULT WINAPI ConnectAndDoSomething(LPTSTR pszDestAddr)
{
CONNMGR_CONNECTIONINFO ci = {0};
PROXY_CONFIG pcProxy = {0};
DWORD dwStatus = 0;
DWORD dwIndex = 0;
HRESULT hr = S_OK;
HANDLE hConnection = NULL;
HANDLE hOpen = NULL;
LPTSTR pszProxy = NULL;
DWORD dwAccessType;

// Register with the connection manager
ci.cbSize = sizeof(CONNMGR_CONNECTIONINFO);
ci.dwParams = CONNMGR_PARAM_GUIDDESTNET;
ci.dwFlags = CONNMGR_FLAG_PROXY_HTTP;
ci.dwPriority = CONNMGR_PRIORITY_USERINTERACTIVE;

// Map the URL to a network, if we can
hr = ConnMgrMapURL(pszDestAddr, &(ci.guidDestNet), &dwIndex);
//Check hr value.

hr = ConnMgrEstablishConnectionSync(&ci, &hConnection, 25000, &dwStatus);
//Check hr value.

//Make sure dwStatus == CONNMGR_STATUS_CONNECTED
// Get proxy information.

hr = ConnMgrProviderMessage( hConnection, &IID_ConnPrv_IProxyExtension, NULL, 0, 0, (PBYTE)&pcProxy, sizeof(pcProxy));

if (S_OK == hr)
{
dwAccessType = INTERNET_OPEN_TYPE_PROXY;
pszProxy = (LPTSTR) LocalAlloc(LPTR, ARRAYSIZE(pcProxy.szProxyServer));
// Make sure pszProxy was allocated.

hr = StringCchCopyN(pszProxy, ARRAYSIZE(pcProxy.szProxyServer),
pcProxy.szProxyServer, ARRAYSIZE(pcProxy.szProxyServer));
//Check hr value
}
else if (E_NOINTERFACE == hr)
{
dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
pszProxy = NULL;

// Reset hr, since it's not really an error here.
hr = S_OK;
}

// Open internet connection, and get merchandise information.
hOpen = InternetOpen(TEXT("Agent name"),
dwAccessType,
pszProxy,
NULL,0);

// Do whatever you need to do with the WININET connection here.
if (hConnection)
{
ConnMgrReleaseConnection(hConnection, TRUE);
}

// Do any necessary cleanup.
return hr;
}


cuterain 2006-08-01
  • 打赏
  • 举报
回复
楼主在概念的理解上还是有一定的问题

// 首先使用得到代理信息
PROXY_CONFIG pcProxy = {0};
BOOL ret=FALSE;
HRESULT hr = ConnMgrProviderMessage( m_hConnection, &IID_ConnPrv_IProxyExtension, NULL, 0, 0,(PBYTE)&pcProxy, sizeof(pcProxy));

然后在在
InternetOpen中使用代理信息打开即可,
hInternet = InternetOpen(HTTP_AGENT, INTERNET_OPEN_TYPE_PROXY ,pcProxy.szProxyServer, NULL, 0);

这样就可以使用代理信息了。关于CMWAP和CMNET的区别我这里还想在说一下,CMWAP针对手机设备的接入点,他就相当于一个http代理服务器。
wellwelcome 2006-08-01
  • 打赏
  • 举报
回复
cmwap需要通过chinamobile网关的代理上internet
你程序中建立的socket应该是以chinamobile网关为代理的(Http代理)
这样你的cmwap连接就可以捅cmnet通信了

我不会evc所以没办法给你代码,但是原理是没错的
xw1980xw 2006-08-01
  • 打赏
  • 举报
回复
我试了,不成功,上次你给我的代码我可以的,这次好像有点变化(上次都是函数指针),我是希望在上移动梦网时,不影响
我的socket通信,我这边要怎么做,现在问题是上移动梦网了,我这不联不上,有什么好办法.
xw1980xw 2006-08-01
  • 打赏
  • 举报
回复
有几处我不太明白
1 关于代理,ConnMgrProviderMessage的到server是什么是移动的wap网关10.0.0.172:80吗?
我是希望上wap移动梦网时,也能连接程序
2 对于ci.dwFlags = CONNMGR_FLAG_PROXY_HTTP的设置,我觉得应该是wap非http,我是wap网关代理http的呀.也许我的理解不对,
3 再次感谢你上次的帮助,我连接成功了.

7,656

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧