20090922

Работа через socks, используя WinInet

Сижу тут в ступоре, не могу понять как именно правильно (если это возможно) исопльзовать socks5 в wininet.
Код нормально работает с 4-м соксом
hInternet = InternetOpen("UserAgent", INTERNET_OPEN_TYPE_PROXY, "socks=127.0.0.1:1080", NULL, 0);
hURL = InternetOpenUrl(hInternet, "http://google.com/",NULL, NULL, NULL, NULL);
result =  InternetReadFile(hURL, &buffer, sizeof(buffer)-1, &bytesReaded);
cout << "result "<< result << endl << bytesReaded << "bytes readed "  << buffer << endl;

Но если после InternetOpen.. добавить пару строк типа
result = InternetSetOption(hInternet,INTERNET_OPTION_PROXY_USERNAME,user,sizeof(user));
if (!result) cout << "Error #"<<  GetLastError() << endl; 

вывалится сообщение об ошибке #12018, которая является константой ERROR_INTERNET_INCORRECT_HANDLE_TYPE -- The type of handle supplied is incorrect for this operation.

Резюме:
Носки 4-го размера, устанавливаются InternetOpen("UserAgent", INTERNET_OPEN_TYPE_PROXY,  "socks=address:port",...);
Носки пятого размера надеть я не смог. Предполагаю, что IE не совместим с ними, хотя это только предположение.

Комментариев нет: