Indy TCP - odczyt danych w pętli

Serwer TCP wysyła ramki danych w sposób ciągły co 8 ms. Chcę zaprogramować klienta w stanie odbierać te ramki danych. Czy w Indy 9 jest jakaś procedura, aby wiedzieć, czy w buforze są dostępne dane?

Moje obecne programy są następujące (używam wątku):

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;

Czy jest jakieś bardziej wydajne rozwiązanie do ciągłego odczytywania danych TCP (jak zdarzenie onread w UDP)?

Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion