вот мой код мне надо чтобы он работал через прокси и чтобы задавалось имя пользователя и его пасс и он делал коннект через прокси Code: ///......................................................... int main() { ///......................................................... WSADATA wsaData; WSAStartup(MAKEWORD(2,0),&wsaData); SOCKET sClient; char szBuffer[1024]; int ret; struct sockaddr_in server; struct hostent *host = NULL; char szServerName[1024]; strcpy(szServerName, "192.168.0.1"); // Создание сокета sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sClient == INVALID_SOCKET) { return 1; } // Заполнение структуры с адресом сервера и номером порта server.sin_family = AF_INET; server.sin_port = htons(80); server.sin_addr.s_addr = inet_addr(szServerName); // Если указано имя, то перевод символьного адреса сервера в IP if (server.sin_addr.s_addr == INADDR_NONE) { host = gethostbyname(szServerName); if (host == NULL) { return 1; } CopyMemory(&server.sin_addr, host->h_addr_list[0], host->h_length); } // Соединение с сервером if (connect(sClient, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR) { return 1; } //................................................................ } //................................................................ если можна по быстрей PLS
Программа-то что делает? Запрашивает некий Url? Если так, то коннект делай к проксе, а в гет/пост укажи урл к запрашиваемому сайту.
Авторизация на прокси происходит внутри GET/POST-запроса в поле Code: Proxy-Authorization: Basic bG9naW46cGFzcw==\r\n где bG9naW46cGFzcw== - это логин и пасс, разделенные двоеточием и закодированные в Base64
krypt3r куда я его поставлю в моем случае у меня ест имя пользователя и его пасс но как его задавать с помошью winsock ?
вот что впринципе мона сделать. сначала приконектиться к проксе через браузер и просмотреть хидеры. потом скопипастить хидеры которые ты посылаешь в твою программу. тобишь написать что то типа этого Code: char headers[] = "хидеры которые посылаешь"; write(s, headers, sizeof headers);
я никак не магу send сделать connect нормально проходит может я HTTP запрос не правильно дал или что делаю не так? вот код
а откуда ты знаешь что ты не можешь делать send? ты сравни ret с нулем. если больше то все ок. ошибка в хидере. если меньше тогда действительно проблемы с sendом
у меня ret=-1 GetLastError() не работает я поставил вот так но ничо не выдает ret = send(sClient, szMessage, strlen(szMessage), 0); GetLastError();
Ну не так же делают обработку ошибок )) Code: if ((ret = send(sClient, szMessage, strlen(szMessage), 0)) < 0) { ... printf ("Error: %d\n", GetLastError()); // закрытие всего открытого - файлов, сокетов, и остановка программы ... }
помогите PLS вот код с запросим HTTP конек к прокси нормально делает но вы даёт ошибку кагда делаю recv в buffer приходит сопшения вот http запрос что делать ?
я думаю что у меня с http запросом что-то ни то или в User-Agent я должен указать другой браузер?????
дело не в браузере. просто тот реквест который ты посылаешь сервак не понимает. попробуй отправлять хидер без написания всего этого в буффер. а откуда у тебя запрос? сам сочинял или скпипастил из браузера?