Einzelnen Beitrag anzeigen

Pet04

Registriert seit: 26. Sep 2007
86 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Findcomponent TclientSocket.active := true setzen

  Alt 5. Jul 2011, 11:48
Hallo zusammen,

ich erstelle dynamisch bis zu 8 clientsockets

.....
Code:
   For j := 0 To 4 do
       begin
        If (PreisLedCfg[j].IP_Ausfahrt <> '0.0.0.0') then
        begin
        try
        Price_Info_ClientSocketA:=TclientSocket.Create(self);
        with Price_Info_ClientSocketA do
        begin
          Name := 'Price_Info_ClientSocketA_'+PreisLedCfg[j].Anlage;   // A für Ausfahert
          ClientType := ctNonBlocking;
          Host := GetIPFromHost(PreisLedCfg[j].IP_Ausfahrt);//GetIPFromHost(host[i]); //IP des Zielrechners
          Port:=StrToInt(PreisLedCfg[j].Port);
          active :=true; //Aufbau der Verbindung
          OnError := Price_Info_ClientSocketA_Error;
          end; // create Price_Info_ClientSocket
          except
          end;
           // ShowMessage(Exception(ExceptObject).Message);
        end;
....

Nun habe ich das Problem, dass bei einem Onerror die Verbindung über einen Timer reconnected wird.
Dazu wollte ich über

If not (TClientsocket(FindComponent(Price_Info_ClientSock etE.Name)).active) then
//if not Price_Info_ClientSocketE.Active then
begin
Memo1.Lines.Add(Price_Info_ClientSocketE.Name +'<connection failed>');
TClientsocket(FindComponent(Price_Info_ClientSocke tE.Name)).Active := true;
//Price_Info_ClientSocketE.Active := true;
Reconnect;

den besimmten clientsocket wieder auf activ setzen.

procedure TMainForm.Reconnect;
begin
Timer_PriceInfo.Interval := Pause;
Timer_PriceInfo.Enabled := True;
Memo1.clear;
Memo1.Lines.Add(Price_Info_ClientSocketE.Name +'<attempting to reconnect in '+ IntToStr(Pause) +'ms>')
end;

aber irgendwie funktioniert es nicht, dass der clientsocket sich wieder connectet

Vielen Dank schon mal für eure Hilfe
  Mit Zitat antworten Zitat