Indy TCP - Daten in einer Schleife lesen

Ein TCP-Server sendet kontinuierlich alle 8 ms Datenrahmen. Ich möchte einen Client programmieren, der diese Datenrahmen empfangen kann. Gibt es eine Prozedur in Indy 9, um zu wissen, ob Daten im Puffer verfügbar sind?

Meine aktuellen Programme sind die folgenden (ich verwende einen Thread):

procedure TThreadRead.Execute;
var
  buffer: array [0..755] of byte;
  //s1: string;
  //i: integer;
begin
  IdTCPClient1.RecvBufferSize:= 756;
  IdTCPClient1.Connect;
  while Terminated = false do
  begin
    if IdTCPClient1.InputBuffer.Size = 0 then
       IdTCPClient1.ReadFromStack(True,0,False);
    while IdTCPClient1.InputBuffer.Size > 0 do
    begin
       ReadBuffer(buffer, FClient.InputBuffer.Size);
       //s1:= '';
       //For i:=0 To Length(buffer)-1 Do
       //  s1:=s1+IntToHex(Ord(buffer[i]),2); //Read values-->global var
       //Form1.Memo1.Text:=s1;
    end;
  end;
end;

Gibt es eine effizientere Lösung zum kontinuierlichen Lesen von TCP-Daten (wie bei einem gelesenen Ereignis in UDP)?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage