Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Synapse и TimeOut


Автор: neweraser 23.5.2012, 10:05
Доброго времени суток!
Использую библиотеку Synapse для работы с сетью, в цикле проверяю прокси на работоспособность, можно ли как-то сделать переход к следующему прокси в списке, если какое-то определенное время нет ответа от сервера или запрос не выполняется?
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: THTTPSend;
  PList: TStringList;
  i, j: Integer;
begin
  PList:= TSTringList.Create;
  PList.LoadFromFile('D:\Proxy.txt');
  HTTP:= THTTPSend.Create;
  j:= 1;
  for i:= 0 to PList.Count - 1 do
  begin
    HTTP.ProxyHost:= Copy(PList.Strings[i], 0, Pos(':', PList.Strings[i]) - 1);
    HTTP.ProxyPort:= Copy(PList.Strings[i], Pos(':', PList.Strings[i]) + 1, Length(PList.Strings[i]));
    if HTTP.HTTPMethod('GET', 'http://2ip.ru') = True then
    begin
      // вот тут надо вставить что-то типа if HTTP.TimeOut > такого-то числа then continue, пробовал - ничего не выходит
      Memo1.Lines.Add(IntToStr(j) +') ' + PList.Strings[i]);
      inc(j);
    end;
  end;
  HTTP.Free;
  PList.Free;
end;

Такие вещи надо делать в отдельном потоке, это просто набросок, выкинул много мусора из кода smile Спасибо за ответы.

-----------
Вставил HTTP.Timeout:= 900; - вроде отбрасывает длительные запросы, вопрос открыт, можно ли сделать проверку работоспособности проксей как-то по-другому? Уж слишком криво у меня.

Автор: MetalFan 23.5.2012, 17:21
neweraser, ну чисто теоретически можно попробовать просто TCP клиентом попробовать подсоединиться...
хотя установка TCP соединения на 100% не покажет, что прокся жива...

Автор: Coder 26.5.2012, 15:24
У тебя, получается, тратится лишнее время на загрузку ресурса через прокси.
Как сказали выше, подключись через свой сокет. А чтобы проверить живой ли прокси, отправь команду и прочитай ответ. 

Автор: neweraser 7.6.2012, 12:32
Спасибо за предыдущие ответы, но проблему толком не решил.. Возник вопрос, какой оптимальный таймаут можно поставить?

Автор: MetalFan 7.6.2012, 17:51
Цитата(neweraser @  7.6.2012,  12:32 Найти цитируемый пост)
какой оптимальный таймаут можно поставить

Проверь экспериментальным путем. секунд 10 имхо хватит.

Автор: neweraser 7.6.2012, 23:27
на spys.ru все прокси публичные, тормозят жестко... а бывает вообще 
Цитата
Maximum number of open connections reached

Думал в чем же ошибка, вот и думаю, что поставить, сколько секунд, чтоб потом присваивать новый ip. Да, наверное, 10-15 секунд будет нормально, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)