Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#1

IdTCPClient.Connect in Thread

  Alt 13. Nov 2009, 08:27
Hallo,

ich habe hier ein kleines Problem. Und zwar will ich in einen thread auf einen Server Connecten. Wenn der Server nun aber nicht verfügbar ist kann ich den Fehler bei Connect nicht abfangen. Delphi Meldet mir noch das der socket nicht zur Verfügung steht, aber der Thread beendet sich dann sofort.
eigentlich sollte der Thread ja weiterlaufen und immer wieder versuchen zu den Server zu connecten:

Ein Try/Except usw hilft leider nichts.

Es ist Indy 10.

Delphi-Quellcode:
procedure TTCPClient.Execute;
var
  ReceivedMessage : String;
begin
  { Thread-Code hier einfügen }

  //init TCP Client:
  IdTCPClient := TIdTCPClient.Create(nil);

  if Assigned(IdTCPClient) then
  begin
    IdTCPClient.Port := fPort;
    IdTCPClient.Host := fHostName;
    IdTCPClient.ReadTimeout := fReadTimeout;

    while not Terminated do
    begin

      if IdTCPClient.Connected then begin
        IdTCPClient.IOHandler.WriteLn('Client ist schon verbunden');
      end
      else begin

          IdTCPClient.ConnectTimeout := 1000;
          IdTCPClient.Connect; -->> hier fehler weil Server nicht gestartet. Wie abfangen?
        if IdTCPClient.Connected then
          IdTCPClient.IOHandler.WriteLn('Client hat sich jetzt verbunden.');
      end;

      if IdTCPClient.Connected then
      begin

        repeat
            //do code stuff here
        until (Not IdTCPClient.Connected) Or Terminated;

      end;
    end;
  end;
end;
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat