Прокси туннелирование C++. Прокси серверы – это компьютеры с установленным специализированным программным обеспечением, служащие для обработки разнообразных запросов со стороны клиента. Основными типами прокси серверов служат: шлюзы, анонимные прокси и файрволы. В данном примере показано как через HTTP прокси получить тестовую html страницу.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaData;
if(!WSAStartup(0x0202,&wsaData))
{
cout<<"WSAStartup is ok"<<endl;
SOCKET s_kproxy = socket(AF_INET,SOCK_STREAM,0);
if(s_kproxy != SOCKET_ERROR)
{
sockaddr_in proxy;
proxy.sin_family = AF_INET;
proxy.sin_port = htons(80);
proxy.sin_addr.s_addr = inet_addr("64.236.20.71");
if(connect(s_kproxy,(PSOCKADDR)&proxy,sizeof(proxy)) != SOCKET_ERROR)
{
cout<<"connect..."<<endl;
char szBuffer[10240];
sprintf(szBuffer,
"CONNECT %s:%d HTTP/1.0\r\nUser-Agent: Test\r\n\r\n","www.code.hut1.ru",80);
if(send(s_kproxy,szBuffer,strlen(szBuffer),0))
{
cout<<"Send - status ok"<<endl;
memset(szBuffer,0,sizeof(szBuffer));
if(recv(s_kproxy,szBuffer,10240,0))
{
cout<<"Buffer: "<<szBuffer<<endl;
ZeroMemory(szBuffer,sizeof(szBuffer));
lstrcpy(szBuffer,"GET /test.htm HTTP/1.0\r\n");
lstrcat(szBuffer,"Host: www.code.hut1.ru\r\n");
lstrcat(szBuffer,"User-Agent: Test\r\n\r\n");
if(send(s_kproxy,szBuffer,strlen(szBuffer),0))
{
cout<<"Send GET - status ok"<<endl;
ZeroMemory(szBuffer,sizeof(szBuffer));
if(recv(s_kproxy,szBuffer,10240,0))
{
cout<<"HTML: "<<endl<<szBuffer<<endl;
}else{cout<<"ERROR: recv 2"<<endl;}
}else{cout<<"ERROR: send GET"<<endl;}
}else{cout<<"ERROR: recv"<<endl;}
}else{cout<<"ERROR: send"<<endl;}
}else{cout<<"ERROR: connect"<<endl;}
closesocket(s_kproxy);
}else{cout<<"ERROR: socket"<<endl;}
if(!WSACleanup())
{cout<<"WSACleanup is ok"<<endl;}
else{cout<<"ERROR: WSACleanup"<<endl;}
}else{cout<<"ERROR: WSAStartup"<<endl;}
cout<<"Press any key to exit"<<endl;
while(!getch());
return 0;
}

Спасибо, очень интересно, но всегда в моих мечтах было работа с http без сторонних библиотек(
Обсуждение закрыто.