我们的网络现在只能上国内网,但我又需要到国外的网站上去查资料,所以想采用代理的方法出去。
但是免费的代理一搜一大堆,一个个试太麻烦了,就想写个程序,能自动去试。
还有一个问题是,很多代理可以ping通,但不一定能链到国外。ping的程序好写,但怎么知道是否链到国外了?
但是免费的代理一搜一大堆,一个个试太麻烦了,就想写个程序,能自动去试。
还有一个问题是,很多代理可以ping通,但不一定能链到国外。ping的程序好写,但怎么知道是否链到国外了?
解决方案 »
- 自绘CListCtrol,显示不了CheckBox的问题
- 数据文件 .db是不是dll?
- 怎么修改button上的文字
- 求VC关于ListView控间的用法的普通例程(VC编程新手:QQ14294770)
- 难度级别5星
- Ado中调用RecordSet的GetEditMode()抛出异常?可能是什么原因,急急急!
- 关于写文件的一个问题,请求帮助!进来看看吧
- 来过../topic/1855/1855601.xml?temp=8.611697E-02和.4118616的朋友请进!!
- 简单问题,哪位大虾帮我看看这个包的原来的字符串是什么?
- 如何在CToolBar上加个底图(Bmp) (大家来up)
- 控制台称序问题
- 请推几个好的vc6程序下载的网站
//Download http file through proxy
//--------------------------------------------------------------------------------
We can find details about Proxy Authentication and Sever Authentication methed in MSDN.
Just search for the keyword "INTERNET_OPTION_USERNAME".
Here I give a very simple example. It works in my project.
CString GeHttptFile(const char *url)
{
CString szContent;
char strProxyList[MAX_PATH], strUsername[64], strPassword[64];
//in this case "proxya" is the proxy server name, "8080" is its port
strcpy(strProxyList, "proxya:8080");
strcpy(strUsername, "myusername");
strcpy(strPassword, "mypassword");
DWORD dwServiceType = AFX_INET_SERVICE_HTTP;
CString szServer, szObject;
INTERNET_PORT nPort;
AfxParseURL(url, dwServiceType, szServer, szObject, nPort);
CInternetSession mysession;
CHttpConnection* pConnection;
CHttpFile* pHttpFile;
pConnection = mysession.GetHttpConnection(szServer,
INTERNET_FLAG_KEEP_CONNECTION,
INTERNET_INVALID_PORT_NUMBER,
NULL, NULL);
pHttpFile = pConnection->OpenRequest("GET", szObject,
NULL, 0, NULL, NULL,
INTERNET_FLAG_KEEP_CONNECTION);
//here for proxy
INTERNET_PROXY_INFO proxyinfo;
proxyinfo.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
proxyinfo.lpszProxy = strProxyList;
proxyinfo.lpszProxyBypass = NULL;
mysession.SetOption(INTERNET_OPTION_PROXY, (LPVOID)&proxyinfo, sizeof(INTERNET_PROXY_INFO));
pHttpFile->SetOption(INTERNET_OPTION_PROXY_USERNAME, strUsername, strlen(strUsername)+1);
pHttpFile->SetOption(INTERNET_OPTION_PROXY_PASSWORD, strPassword, strlen(strPassword)+1); pHttpFile->SendRequest(NULL);
DWORD nFileSize = pHttpFile->GetLength();
LPSTR rbuf = szContent.GetBuffer(nFileSize);
UINT uBytesRead = pHttpFile->Read(rbuf, nFileSize);
szContent.ReleaseBuffer();
pHttpFile->Close();
delete pHttpFile;
pConnection->Close();
delete pConnection;
mysession.Close();
return szContent;
}