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.