![]() |
Indy10 threaded, queued
Moin,
ich versuche gerade, einen queue in meine INdy10-Verbindung einzubauen. Dazu lese ich ![]()
Code:
Mein Problem ist: Wie sieht das Gegenstueck zu diesem Queue auf Client-Seite aus?
procedure TMaster.IdTCPServer1Execute(AContext: TIdContext);
var Queue: TIdThreadSafeStringList; List: TStringList; Tmp: TStringList; I: Integer; begin ... Queue := TIdThreadSafeStringList(AContext.Data); List := Queue.Lock; try if List.Count > 0 then begin Tmp := TStringList.Create; try Tmp.Assign(List); List.Clear; except Tmp.Free; raise; end; end; finally Queue.Unlock; end; if Tmp <> nil then try AContext.Connection.IOHandler.Write(Tmp, False); finally Tmp.Free; end; ... end; IdTCPClient1 hat ja keinen 'AContext' (natuerlich nicht), in dem AContext.Data diese Liste sein koennte... |
AW: Indy10 threaded, queued
So in der Art?
Delphi-Quellcode:
Da man aber immer das Encoding angeben sollte, ist es besser, auf Server und Client das Text-Encoding fest anzugeben, im Client zum Beispiel so:
SL: TStrings;
... SL := TStringList.Create; ... IdClient.IOHandler.ReadStrings(SL); ...
Delphi-Quellcode:
ReadStrings(SL, -1, IndyTextEncoding_UTF8);
|
AW: Indy10 threaded, queued
Ah, ja Danke!
Nochmal eine Verstaendnisfrage: AContext.Data sind alle Daten insgesamt, die noch nicht gelesen wurden? (unabhaengig davon, ob man das nachher in ein beliebiges TObject castet...) |
AW: Indy10 threaded, queued
Was mir gerade noch aufstoesst:
TIdThreadSafeStringList kann nicht per Index auf die Strings zugreifen. Was soll das denn? Ich muss doch irgendwie nur den ersten Befehl/String lesen koennen, um daraus eine Art lockbaren FIFO-Puffer zu bauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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