Connect to proxy
От: rodos  
Дата: 11.08.03 12:07
Оценка:
Подскожите плс ка создать сокет соединение через прокси?

12.08.03 06:51: Перенесено из 'C/C++'
Re: Connect to proxy
От: konst  
Дата: 12.08.03 11:47
Оценка:
Какой прокси?
Если обычный локальный http-прокси, то зная ип+порт коннектишься к нему, дальше работает как без прокси. WinInet сама с таким прокси разбирается.
Re[2]: Connect to proxy
От: unkn  
Дата: 14.08.03 10:24
Оценка:
Здравствуйте, konst, Вы писали:

K>Какой прокси?

K>Если обычный локальный http-прокси, то зная ип+порт коннектишься к нему, дальше работает как без прокси. WinInet сама с таким прокси разбирается.

Если можно, подробней, пожалуйста. С примером кода. Как коннектиться к http-прокси?
Я пытался это делать примерно так (убрал проверку ошибок).

...

SOCKET ProxySocket = socket(AF_INET, SOCK_STREAM, 0);

sockaddr_in ProxyAddr;
::ZeroMemory(&ProxyAddr, sizeof(ProxyAddr));
ProxyAddr.sin_family = AF_INET;
ProxyAddr.sin_addr.S_un.S_addr = ::inet_addr(”192.168.0.222”);//адрес прокси сервера
ProxyAddr.sin_port = ::htons(80);//порт прокси сервера

//присоединяемся к прокси
connect(ProxySocket, (sockaddr*) &ProxyAddr, sizeof(ProxyAddr));

//Посылаем запрос на соединение с моим сервером.
char request[] = “CONNECT 213.87.11.xxx:5678 HTTP/1.0\r\n”
send(ProxySocket, request, sizeof(OutBuffer), 0);

//Ждём ответа от прокси об установке соединения с моим сервером
char InBuffer[512];
int ActualLength = 0;
ActualLength = recv(ProxySocket, InBuffer, sizeof(InBuffer), 0);

...

Через 2 минуты (истекает таймаут) фун. recv завершается, не дождавшись ни какого ответа от прокси. Что не так? На прямую без прокси работает всё нормально.
Re[3]: Connect to proxy
От: konst  
Дата: 15.08.03 12:50
Оценка:
Странно, делаю всё точно также (только сокет асинхронный) -- работает. Вот только CONNECT слать не обязательно, я не понял точно, зачем этот коннект нужен, наверное, только для HTTPS прокси, просто HTTP оно и не зачем, а апачи в роли прокси на такой запрос ошибку возвращал вообще...
Re[3]: Connect to proxy
От: Alex Fedotov США  
Дата: 15.08.03 16:34
Оценка: 3 (1)
Здравствуйте, unkn, Вы писали:

U>//Посылаем запрос на соединение с моим сервером.

U>char request[] = “CONNECT 213.87.11.xxx:5678 HTTP/1.0\r\n”
U>send(ProxySocket, request, sizeof(OutBuffer), 0);

U>//Ждём ответа от прокси об установке соединения с моим сервером

U>char InBuffer[512];
U>int ActualLength = 0;
U>ActualLength = recv(ProxySocket, InBuffer, sizeof(InBuffer), 0);


U>Через 2 минуты (истекает таймаут) фун. recv завершается, не дождавшись ни какого ответа от прокси. Что не так?


char request[] = "CONNECT 213.87.11.xxx:5678 HTTP/1.0\r\n\r\n";

Прокси ждала, когда ты ей запрос целиком дошлешь.
-- Alex Fedotov
Re[4]: Connect to proxy
От: Vamp Россия  
Дата: 18.08.03 10:51
Оценка:
А вообще что бы получать что-то через http-прокси вполне достаточно банального get.
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.