![]() |
Indy TCP Client - Auf Nachrichten warten...
Hallo!
Ich würde gerne wissen, wie ich mit meinem TCPCLient warten kann, auf neue Nachrichten vom Server. Wenn ich das mit einem Timer mache hängt mein Programm. Muss ich das in einen Thread verpacken? Bräuchte da mal Hilfe, wenn mir jemand helfen könnte wäre ich sehr glücklich! Danke und Gruß Peter |
Re: Indy TCP Client - Auf Nachrichten warten...
Guten Abend,
ich habe das mal für einen Thread so gelöst.
Delphi-Quellcode:
type
TTcpClientThread = class(TThread) private tcpClient : TIdTcpClient; alarmFilter : TAlarmFilter; reports : TReporter; procedure myOnConnected(Sender: TObject); procedure myOnDisconnected(sender: TObject); procedure myOnStatus(aSender: TObject; const aStatus: TIdStatus; const aStatusText: AnsiString); public constructor Create(comServ: TComServ);virtual; procedure Execute; override; destructor Destroy; override; end; und die execute Methode:
Delphi-Quellcode:
Grüße
procedure TTcpClientThread.Execute;
var addNewLine : Boolean; noDataCounter : Byte; s : AnsiString; begin addNewLine := false; noDataCounter := 0; while (not terminated) do begin try while not tcpClient.Connected do begin try tcpClient.Connect; except on E:Exception do begin writeLn('Error '+E.Message); sleep(5000); end; end; end; if not tcpClient.IOHandler.InputBufferIsEmpty then begin s:= tcpClient.IOHandler.InputBufferAsString; alarmFilter.getData(s); //reporter.getData(s); s:=''; noDataCounter := 0; addNewLine := true; end else begin sleep(100); inc(noDataCounter); if (noDataCounter > 5) and addNewLine then begin addNewLine := false; alarmFilter.getData(#13#10); end; end; except on E:Exception do begin writeLn('Error '+E.Message); tcpClient.IOHandler.CloseGracefully; end; end; end; tcpClient.Disconnect; end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz