![]() |
Re: TIdTCPServer : An Gruppe verbundener Clients senden
Hallo Dominik,
Delphi-Quellcode:
sodele mit dem obigen code funktioniert es.
procedure TTcpClientThread.Execute;
var s : AnsiString; begin while (not terminated) do begin try // 1. while not tcpClientTr.Connected do begin try tcpClientTr.Connect; except on E:Exception do begin MainFormClient.IncomingMessages.Lines.Add('Error '+E.Message); sleep(5000); end; end; end; // 2. if not tcpClientTr.IOHandler.InputBufferIsEmpty then begin s:= tcpClientTr.IOHandler.InputBufferAsString; MainFormClient.IncomingMessages.Lines.Add('Received : ' + S); s:=''; end else begin sleep(100); end; except on E:Exception do begin MainFormClient.IncomingMessages.Lines.Add('Error '+E.Message); tcpClientTr.IOHandler.CloseGracefully; end; end; end; // tcpClientTr.Disconnect; end; Frage mich nicht warum. Wenn die Stellen zwischen 1. und 2. auskommentiert werden funktioniert es nicht mehr. Keine Ahnung warum. .. und noch etwas dazugelernt.
Delphi-Quellcode:
Für das Auflisten der Clientverbindungen braucht man keine seperate Liste,
var
i : Byte; begin for i:= 0 to tcpServer.Contexts.LockList.Count -1 do tidContext(tcpServer.Contexts.LockList.Items[i]).Connection.IOHandler.Write('Hallo'); tcpServer.Contexts.unLockList; // Danke an Apollonius end; der TCPServer bringt eine mit. Grüße Klaus |
Re: TIdTCPServer : An Gruppe verbundener Clients senden
Das Problem hat mit dem Netzwerk nichts zu tun, sondern mit der TThreadList. Für jeden Aufruf von LockList musst du auch einmal UnlockList aufrufen. In der Sende-Routine solltest du das Resultat von LockList also in einer lokalen Variablen speichern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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 by Thomas Breitkreuz