Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с соксами в потоках, не могу подружить TIdSocksInfo и TThread 
:(
    Опции темы
fack00
Дата 25.5.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.5.2009

Репутация: нет
Всего: нет



цель программы: даем список сокс5 и получаем многопоточно страницы (в примере просто определяем ип адресс через myip.ru)


Код

constructor TNewThread.Create;
begin
  inherited Create(True);
  FreeOnTerminate := True;
  FIdHTTP := TIdHTTP.Create(nil);

  FIdIOHandlerStack:=TIdIOHandlerStack.Create;
  FIdSocksInfo:=TIdSocksInfo.Create;

  FIdHTTP.IOHandler:=FIdIOHandlerStack;
  FIdIOHandlerStack.TransparentProxy:=FIdSocksInfo;

  FIdSocksInfo.Authentication:=saNoAuthentication;
  FIdSocksInfo.Version:=svSocks5;
..........
end;

procedure TNewThread.Execute;
var str:string;
begin
str:=FIdHTTP.Get('http://www.myip.ru/get_ip.php?loc=');
....
end;


Такой код работает почему-то криво, а именно страница получается минуя сокс5, то есть с моего ип адреса.

Методом тыка нашел проблему:
Код

//заменяем
FIdSocksInfo:=TIdSocksInfo.Create;
//на
FIdSocksInfo:=Form1.IdSocksInfo1.Create;

// то есть создаем FIdSocksInfo в потоке из компонента (IdSocksInfo1) на форме (Form1)

Так все работает нормально (страница получается через сокс5).

Это конечно же неправильно, т.к. при создании множества потоков все это дело падет крахом... (критические секции не предлагать)

В чем может быть проблема?

P.S.
1) Потоку данные сокса (ip:port) передаются верно.
2) Сокс точно Socks5, а не иного вида.

PM MAIL   Вверх
Matematik
Дата 27.5.2010, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 7
Всего: 50



В Indy9 так
Код

  IdHTTP1 := TIdHTTP.Create(nil);
  IdSocks := TIdSocksInfo.Create(IdHTTP1);
  IdIOHandlerSocket1 := TIdIOHandlerSocket.Create(nil);  

  IdIOHandlerSocket1.SocksInfo := IdSocks;
  IdHTTP1.IOHandler := IdIOHandlerSocket1;


PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0602 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.