Einzelnen Beitrag anzeigen

myicq

Registriert seit: 5. Jan 2016
70 Beiträge
 
Delphi 6 Professional
 
#1

TIdTCPClient - parallel Verbindungen aufbauen ?

  Alt 10. Jan 2017, 12:58
Hallo,

ich habe eine kleine App enwickelt was Anwender erlaubt Industriecontroller zu bedienen. Max 16 Stck.
Kommunikation geht, läuft über TIdTCPClient. Und soweit auch kein Problem.

Aber.. bei 16 Controller muss no 16 zzt abwarten bis 1..15 ausgeführt ist. Was etwa 1-2 Min dauert.

Deshalb meine Frage: wie mache ich das "parallel" ? Ich vermute mit TThreads. Eine kurze Beispiel währe genug.

Was ich jetzt habe.. dieses Procedure ist über eine Loop (i = 1..16) ausgeführt.

Delphi-Quellcode:
{
  --------------
  Action loop for controller
  --------------
 
  This is run up to 16 times..

}

procedure TpopForm.do_some_action(printerid : integer);
const
   port: Integer = 3000;
var
   TCPClient: TIdTCPClient;
   s : string;
begin
     try
         try
            TCPClient := TIdTCPClient.Create(nil);
            TCPClient.Port := port;
            TCPClient.Host := controllers[printerid].IP;      // IPs stored in an array
            TCPClient.UseNagle:=False;
            TCPClient.RecvBufferSize := 1024;
            TCPClient.SendBufferSize := 1024;
            TCPClient.Connect;

            // NOW SEND THE STRING TO RESET INK LEVEL
            TCPClient.Write('MYCOMMAND#'); // commands and responses terminate by "#"
            repeat
              s := TCPClient.ReadLn('#');
            until LeftStr(s, 3) = 'RES';            // final response starts with "RES"

         except
         end;
       
     finally
       TCPClient.Disconnect;
       tcpclient.Free;

     end;
end;
  Mit Zitat antworten Zitat