Прокси туннелирование 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 без сторонних библиотек(
Обсуждение закрыто.