2015-06-30 10 views

ответ

2

Indy уже имеет встроенный фрейм для подключения любой Клиентский компонент TCP через прокси. Вы просто присоединяете желаемый прокси-компонент к клиентскому компоненту, а затем клиент будет автоматически подключаться к прокси-серверу и сообщать, с каким подключением. А прокси-компоненты могут быть закодированы, если вам нужно подключиться через несколько прокси.

Инди 10 обеспечивает два компонента прокси-сервера по умолчанию - TIdSocksInfo для SOCKS 4/4a/5 прокси и TIdConnectThroughHttpProxy для HTTP прокси (с использованием метода HTTP-CONNECT). Но структура достаточно универсальна, что вы можете получить новые классы, если вам нужно реализовать другие протоколы прокси.

В вашем случае, назначить TIdIOHandlerStack компонент к TIdIMAP4.IOHandler собственности перед подключением к серверу, назначить TIdSocksInfo компонент к TIdIOHandlerStack.TransparentProxy собственности, а также настроить TIdSocksInfo по мере необходимости. Все это можно выполнить во время разработки или во время выполнения.

+0

Отлично! Спасибо Реми. Еще одна вещь - есть ли прямой метод использования TIdSocksInfo в настройках прокси-сервера системы? –

+0

Нет. Для начала не существует понятия «системный прокси-сервер». И даже если бы это было, это было бы сильно зависимым от платформы. Возможно, вы думаете о собственной настройке прокси-сервера WinInet? Это не является системным. Вам нужно будет спросить WinInet для этого параметра. В противном случае вы можете использовать такие протоколы, как Auto-Discovery (WPAD) для обнаружения прокси-сервера в сети. Но в любом случае вам нужно будет присвоить соответствующие значения 'TIdSocksInfo' по мере необходимости. –

+0

Отлично, спасибо Реми, это очень полезно !. –