c++ socket通过代理连接
C++ socket connection through proxy
大家好,我问我的问题,我有这个代码下载一个网页
#include <iostream>
#include <urlmon.h>
#include <string>
#pragma comment(lib,"urlmon.lib")
using namespace std;
int main()
{
string indirizzo;
IStream * is;
char buffer[256];
cout<<"Insert adress of the web page: ";
cin>>indirizzo;
if(URLOpenBlockingStream(NULL,indirizzo.c_str(),&is,0,NULL)!=S_OK)
{
cerr<<"ERROR DOWNLOAD.";
}
else
{
cout<<"download OK"<<endl;
system("Pause");
ULONG readBytes;
while(is->Read(buffer,sizeof(buffer),&readBytes)==S_OK)
{
cout.write(buffer,readBytes);
}
is->Release();
}
system("cls");
system("Pause");
return 0;
}
你可以通过在http请求之前通过代理连接套接字来做到这一点?我想做的一切都通过代理
您使用的API似乎是InternetExplorer派生的。似乎你不能只使用这个API来使用代理(除了系统范围)。如果这对你来说很好,只需将你的ControlPanel代理设置为所需的设置,你就可以开始了。IE以外的浏览器甚至可能被配置成使用自己的代理设置,所以你可以限制系统范围设置的效果,如果你只需要它为你的程序。
如果你只需要你的应用程序,或者其他隐藏/安全(用户可能能够看到/更改IE设置),你可能会尝试使用WinINet下载你的文件,但这不是你所要求的。我预计WinINet版本会更长,更麻烦。请参阅MSDN WinINet文档,特别是InternetSetOption。
编辑:我看到你可能能够使用它来设置全局和每个进程的IE设置。参见如何在Internet Explorer下以编程方式查询和设置代理设置,以及INTERNET_OPTION_PER_CONNECTION_OPTION选项的文档。
要在系统范围内执行此操作,只需将NULL
用作InternetSetOption
中的hInternet
。要为自己的进程这样做,在任何其他网络代码之前使用InternetOpen
,并使用返回的句柄-它似乎也应该影响动态加载的IE引擎。
相关文章:
- 代理对象的常量正确性
- 当套接字连接断开时检测C/C++Unix
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- SNMP 代理在单元测试期间断开连接
- 如果 PUB 首先启动并连接到 XPUB/XSUB 代理,则消息将被丢弃,直到 SUB 未连接
- 使用Hooking wsocks32.dll通过代理对应用程序的所有连接进行隧道传输
- HTTP 代理检测 HTTP 客户端断开连接
- 通过注册表更改 PPPoE DSL 连接的代理设置
- Windows Server 2012上的SNMP扩展代理无法连接到需要数据的端口
- 如果通过代理连接,客户端不会断开连接
- c++ socket通过代理连接
- 使用libcURL通过HTTP代理连接FTP服务器失败
- 通过代理对应用程序的所有连接进行隧道化
- 通过代理服务器增强asio套接字连接