Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

прокси в многопоточной программе

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 07.08.2012, 12:51   #1
Заблокирован
 Сержант
Аватар для Steam~
 
Steam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе цену
Регистрация: 09.08.2010
Сообщений: 143
Популярность: 4928
Сказал(а) спасибо: 382
Поблагодарили 254 раз(а) в 175 сообщениях
 
По умолчанию прокси в многопоточной программе

Пишу многопоточный чекер с проксями, многопоточность написана, работает как часы, но вот когда подключаешь прокси не валидные акки в валидный записывает(и на оборот), до конца по всему списку аккаунтов не доходит(при большом кол-во). Что не так? и как исправить..
Вот код потока
Код:
procedure TNewThread.Execute;
var CurAcc:integer;
    data:TstringList;
    http:TIdHttp;
    ps, pp,resultt:string;
begin
 while Work do
  begin
   CS.Enter;
   inc(tp);
   Inc(Acc);
   if Acc<Accounts.Count then CurAcc:=Acc else Work:=false;

   if tp=Proxys.Count-1 then tp:=0;

   CS.Leave;

   if Work then
    begin
     FAcc:= Copy(Accounts[CurAcc],1,Pos(';',Accounts[CurAcc])-1);
     FPas:= Copy(Accounts[CurAcc],Pos(';',Accounts[CurAcc])+1,Length(Accounts[CurAcc]));

    ps:=Copy(Proxys[tp], 1, Pos(':',Proxys[tp])-1); //Копируем адрес
    pp:=Copy(Proxys[tp], Pos(':', Proxys[tp])+1, Length(Proxys[tp])); //Копируем порт

     http := TidHTTP.Create;
     Data := TStringlist.Create();
      try
     data.add('loginForm_default_username='+FAcc);
     data.add('loginForm_default_password='+FPas);
      http.HandleRedirects:=true;
      http.ProxyParams.ProxyServer:=ps;
      http.ProxyParams.ProxyPort:=strtoint(pp);
      try
     resultt:=http.Post('http://darkorbit.ru/?locale=ru&aid=0',data);
     except
     rez:=0;
     end;
      if pos('loginErrorMessage',resultt)<>0 then rez:=-1
     else
     if pos('http://ru1.darkorbit.bigpoint.com/GameAPI.php',resultt)<>0 then rez:=1
     else
     rez:=0;


     Application.ProcessMessages;
     HTTP.Free;
     data.Free;
     finally
       end;
     Synchronize(Sync);
    end;
  end;

 dec(Thread);
 if Thread=0 then ShowMessage('OK');
end;
на каждый новый цикл берется новая прокся, при рез=0 аккаунт записывается в конец списка для повторной проверки

Последний раз редактировалось Steam~; 07.08.2012 в 13:19.
  Ответить с цитированием
Старый 09.08.2012, 20:16   #2
Заблокирован
 Сержант
Аватар для Steam~
 
Steam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе цену
Регистрация: 09.08.2010
Сообщений: 143
Популярность: 4928
Сказал(а) спасибо: 382
Поблагодарили 254 раз(а) в 175 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

что прям совсем никто не знает в чем трабл?
  Ответить с цитированием
Старый 09.08.2012, 21:33   #3
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

Подозреваю, что проблема в прямом использовании переменных главного потока в дочерним потоке.
________________

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
Старый 09.08.2012, 22:59   #4
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от Steam~Посмотреть сообщение
многопоточность написана, работает как часы

Всегда меня такие фразы настораживали
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 09.08.2012, 23:57   #5
Заблокирован
 Сержант
Аватар для Steam~
 
Steam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе ценуSteam~ знает себе цену
Регистрация: 09.08.2010
Сообщений: 143
Популярность: 4928
Сказал(а) спасибо: 382
Поблагодарили 254 раз(а) в 175 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от J-FobosПосмотреть сообщение
Подозреваю, что проблема в прямом использовании переменных главного потока в дочерним потоке.

все переменные главного потока находятся в крит.секциях
  Ответить с цитированием
Старый 10.08.2012, 19:40   #6
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: прокси в многопоточной программе

Я вообще не вижу здесь половины кода. Критических секций не вижу. Записи в файл не вижу. Это "Application.ProcessMessages;" меня страшно настораживает.
  Ответить с цитированием
Старый 11.08.2012, 15:33   #7
Заблокирован
 Разведчик
Аватар для iNugno
 
iNugno на правильном пути
Регистрация: 26.06.2012
Сообщений: 10
Популярность: 46
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 7 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Это "Application.ProcessMessages;" меня страшно настораживает.

-Реакция на дальнейшую строку, а потом выполнение.
Пример:
Код:
запускаем таймер, что-то делаем, потом бац, процесс сообщение, далее можно и слип впихнуть (за счет процесс сообщения мы поспим), а потом что-то делаем.
Дин, чет я тебя не узнаю.
а по списку -
Код:
while not eof(список) do
begin
...
end;
валидность - убери проверку на обратное, если при удачном входе у нас выскочило "то-то", тогда мы "это" добавляем в другой список\массив, что угодно.

Как выглядит:

1)Берем себе прокси
2)Берем логин
3)Берем пароль
4)Проверяем логин\пасс
5)Да - пишем куда-то.
  Ответить с цитированием
Старый 11.08.2012, 17:32   #8
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от iNugnoПосмотреть сообщение
-Реакция на дальнейшую строку, а потом выполнение.

Не говори этих глупостей. Эта строка в отдельном потоке написана.

А то что ты предлагаешь больно похоже на однопоточное приложение.
  Ответить с цитированием
Старый 12.08.2012, 15:38   #9
Заблокирован
 Разведчик
Аватар для iNugno
 
iNugno на правильном пути
Регистрация: 26.06.2012
Сообщений: 10
Популярность: 46
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 7 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Не говори этих глупостей. Эта строка в отдельном потоке написана.

А то что ты предлагаешь больно похоже на однопоточное приложение.

есть похожая, многопоточная и проксевая. Взял прокси, взял данные, пошел пробивать. Если да - норм, нет - ничего страшного, есть еще.

А насчет глупостей - ок, докажем это:
Справка:
Цитата:
Interrupts the execution of an application so that it can process the message queue.

+
Цитата:
Call ProcessMessages to permit the application to process messages that are currently in the message queue. ProcessMessages cycles the Windows message loop until it is empty, and then returns control to the application.

  Ответить с цитированием
Старый 13.08.2012, 13:53   #10
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: прокси в многопоточной программе

iNugno, ты говоришь бред. ProcessMessages нужно вызывать, если цикл работает в основном потоке, чтобы вернуть приложению контроль. Нафига его в потоке вызывать? Где логика?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 13.08.2012, 14:38   #11
Заблокирован
 Разведчик
Аватар для iNugno
 
iNugno на правильном пути
Регистрация: 26.06.2012
Сообщений: 10
Популярность: 46
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 7 сообщениях
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
Нафига его в потоке вызывать? Где логика?

Т.к. я не вызывал сей месседж, поэтому не скажу. (Я его использовал в таймере, пример выше)
А то, что я говорю бред - читаем справку, понимаем, что все, что я написал выше - полнейшая правда. Дин не знает, что такое ProcessMessages, я ему показал. А теперь, как оказалось, я остаюсь незнайкой. Соглашусь, что немного не верно "-Реакция на дальнейшую строку, а потом выполнение" - но суть так же.
  Ответить с цитированием
Старый 13.08.2012, 21:20   #12
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от iNugnoПосмотреть сообщение
Я его использовал в таймере, пример выше

Красавец!!! Только нафига он в таймере?
Цитата:
Сообщение от iNugnoПосмотреть сообщение
Дин не знает, что такое ProcessMessages, я ему показал.

У дина опыта в раз 10 больше моего, а про тебя я молчу

Дальнейший текст даже комментировать не хочу
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 13.08.2012, 21:24   #13
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: прокси в многопоточной программе

Цитата:
Сообщение от iNugnoПосмотреть сообщение
Т.к. я не вызывал сей месседж, поэтому не скажу. (Я его использовал в таймере, пример выше)
А то, что я говорю бред - читаем справку, понимаем, что все, что я написал выше - полнейшая правда. Дин не знает, что такое ProcessMessages, я ему показал. А теперь, как оказалось, я остаюсь незнайкой. Соглашусь, что немного не верно "-Реакция на дальнейшую строку, а потом выполнение" - но суть так же.


Ты читаешь справку но не понимаешь о чем пишешь. То что ты написал "полнейшая правда" лишь в случае объявления application.processmessage в основном потоке приложения (в потоке, в котором обрабатываются все события формы). Дин прекрасно знает что это такое, и указал тебе на это еще несколькими постами выше, не нужно пытаться выставить меня неучем.

Еще раз для тех кто в нижней части танка Application.ProcessMessage имеет смысл вызывать лишь из основного потока приложения, так как долговременные рассчеты в циклах (в таймере он тоже абсолютно не нужен) могут подвесить форму приложения, что помешает пользователю работать с ней).
Вызов этой команды из другого потока не имеет смысла, поскольку он обрабатывается отдельно от формы.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Прокси в программе ?? [Na`Vi]DendI Вопросы и ответы, обсуждения 0 09.06.2012 23:55
[Продам] Многопоточный чекер прокси под л2топ cavern Товары/услуги в Сети 3 15.05.2010 10:41

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 13:51.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net