На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> CInternetSession и SOCKS-proxy , Возможно ли использовать запросы CInternetSession через SOCKS прокси?
    Возможно ли использовать запросы CInternetSession через SOCKS прокси?
    Пробовал так:
    ExpandedWrap disabled
      CInternetSession m_session;
       
      CString FullProxyAddr(L"127.0.0.1:3128");
       
      INTERNET_PROXY_INFO pi;
      pi.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
      pi.lpszProxy = FullProxyAddr;
      pi.lpszProxyBypass = _T("");
      m_session.SetOption(INTERNET_OPTION_PROXY, &pi, sizeof(pi));
       
      HTTPfile = (CHttpFile *)m_session.OpenURL(L"https://ya.ru", 1, INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE);


    Возникло две проблемы:
    1. Соединение не устанавливается - ошибка 12029
    2. После вызова m_session.SetOption(INTERNET_OPTION_PROXY, &pi, sizeof(pi)) соединение всегда пытается установиться через 0.0.0.1:80, даже после того, как в структуре передать INTERNET_OPEN_TYPE_DIRECT или INTERNET_OPEN_TYPE_PRECONFIG, т.е., оно установилось через неправильный прокси и не меняется уже почему-то.

    Как это всё победить?
    Сообщение отредактировано: yasli -
      Заработало вот так:

      //через прокси
      pi.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
      pi.lpszProxy = (LPCTSTR)"socks=127.0.0.1:3128";
      pi.lpszProxyBypass = (LPCTSTR)("127.0.0.1");

      //без прокси
      pi.dwAccessType = INTERNET_OPEN_TYPE_PRECONFIG;//можно INTERNET_OPEN_TYPE_DIRECT
      pi.lpszProxy = NULL;
      pi.lpszProxyBypass = NULL;


      НО!
      У меня на форме галка "Использовать прокси". Запускаю приложение - галка не установлена, соединение идет напрямую. Ставлю галку - соединение идет через прокси. Снимаю галку - соединение идет через прокси, при этом SetOption с INTERNET_OPEN_TYPE_DIRECT отрабатывает. Перезапускаю приложение, галка снята - соединение идет напрямую.

      Как сделать, чтобы заработало нормально?
      Сообщение отредактировано: yasli -
        Почему-то соединение не завершается даже после удаления всех объектов, связанных с CInternetSession и самого CInternetSession:

        m_pSession->Close();
        InternetCloseHandle((HINTERNET)m_pSession);
        delete m_pSession;
        m_pSession = NULL;

        И при следующем запросе используется текущее соединение...
        Соединение завершается только при закрытии приложения (
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0252 ]   [ 16 queries used ]   [ Generated: 19.04.24, 22:15 GMT ]