Wenn in meiner Schleife mit ReadLn auf die Daten vom Client warte, verzögert sich die Übermittlung der Daten an den Client. Wie lasse ich auf dem Server die Daten empfangen, ohne dass sich der Sendeprozess verzögert?
Bei
Indy zum Beispiel etwa so, die Prozedur wird dann einfach von Zeit zu Zeit innerhalb der while Schleife aufgerufen:
Delphi-Quellcode:
procedure CheckForClientData(const IOHandler: TIdIOHandler);
begin
if IOHandler.InputBufferIsEmpty then
begin
// sind Daten vorhanden?
IOHandler.CheckForDataOnSource(10); // blockiert maximal 10 Millisekunden
if IOHandler.InputBufferIsEmpty then
Exit;
end;
// Daten sind vorhanden: jetzt darf man (blockierend) die Client-Daten lesen
ClientData := IOHandler.ReadLn(ATimeOut);
// verarbeite Client-Daten
...
end;