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


Автор: Anakin 17.8.2012, 03:43
Добрый вечер.
Есть процедура которая парсит сайт.
Но гдето через 5-10 минут выходит ошибка в программе Socket Error #10054 Connection reset by peer
Так вот я пытаюсь сделать так что бы при выходе такой ошибки происходило автоматическое пере подключение и программа продолжала работать.
Но что не получается, по любому выходит ошибка а пере подключение не происходит.
Вот код моей функции, подскажите что не так с ней.

Код

Trying:=0;
  Repeat
    GoodCon:=False;
    try
        Data := TStringList.Create;
        frmMain.idHttp.Request.Host:='sait.ru';
        frmMain.idHttp.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.2; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
        frmMain.idHttp.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        frmMain.idHttp.Request.AcceptLanguage:='ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3';
        frmMain.idHttp.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
        frmMain.idHttp.Request.Referer:='http://sait.ru/';
        frmMain.idHttp.Request.Connection:='keep-alive';
        frmMain.idHTTP.Response.KeepAlive:=True;
        Data.Add('username=' + edt_login.Text);
        Data.Add('password=' + edt_pwd.Text);
        StrPage := frmMain.idHttp.Post('http://www.sait.ru/takelogin.php', Data);
        GoodCon:=True;
     Except
          On E:EIdSocketError Do
          Begin
            Inc(Trying);
            if E.LastError = 10054 then
             Begin
              StrPage := frmMain.idHttp.Post('http://www.sait.ru/takelogin.php', Data);
             End;
          End;
          End;
  Until (Trying > 4) Or GoodCon;

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