Indy TCP - Leer datos en un bucle
Un servidor TCP está enviando marcos de datos continuamente cada 8 ms. Quiero programar un cliente capaz de recibir estos marcos de datos. ¿Hay algún procedimiento en Indy 9 para saber si hay datos disponibles en el búfer?
Mis programas actuales son los siguientes (estoy usando un subproceso):
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;
¿Hay alguna solución más eficiente para leer datos TCP de forma continua (como un evento no leído en UDP)?
Gracias por adelantado.