Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPClient.IOHandler.InputBufferIsEmpty (https://www.delphipraxis.net/209653-tcpclient-iohandler-inputbufferisempty.html)

Schuby 5. Jan 2022 13:49

TCPClient.IOHandler.InputBufferIsEmpty
 
Hallo, vllt kann mir jmd von euch helfen
ich muss ständig den RxBuffer von TCPClient prüfen ob Daten
angekommen sind, aber es haut nicht hin was ich im Internet
gefunden habe.

Das habe ich getestet, aber das haut auch nicht hin

Code:
      i:= 0;
      Repeat
        i:= Form1.TCPClient.IOHandler.InputBuffer.Size;
      Until i > 0;


mfg Schuby

HolgerX 5. Jan 2022 16:29

AW: TCPClient.IOHandler.InputBufferIsEmpty
 
Hmm..

Bei INDY gibt es doch IdTCPClient.IOHandler.InputBufferIsEmpty

Ich hab nen Testtool gefunden, dort frage ich per Timer nach JSON Daten ab:

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  ReceivedText: string;
begin
  Timer1.Enabled := False;
  try
    with FIdTCPClient do
    begin
      if not Connected then Exit;
      // read any data in
      if IOHandler.InputBufferIsEmpty then
      begin
        IOHandler.CheckForDataOnSource(0);
        IOHandler.CheckForDisconnect;
        if IOHandler.InputBufferIsEmpty then Exit;
      end;

      // Wartet auf JSON...
      IOHandler.WaitFor('{', False);
      ReceivedText := IOHandler.WaitFor('}', True, True, IndyTextEncoding_UTF8);
      Memo1.Lines.Add(ReceivedText);

      // if not already, send streaming command
      if not FSentStreamCommand then
      begin
        IOHandler.WriteLn('?WATCH={"enable":true,"json":true}');
        FSentStreamCommand := True;
      end;
    end;
  finally
    if FIdTCPClient.Connected then
      Timer1.Enabled := True;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz