![]() |
Nachricht kommt nicht bei allen Clients an
Hallo,
ich habe einen Chat programmiert und habe jetzt das Problem, dass wenn ein Client eine Nachricht an den Server schickt, diese zwar beim Server ankommt, aber der Server diese nicht an alle Clients zurückschickt, sondern nur an der Client, der die Nachricht geschickt hat. Mein Code für das Schicken der Nachricht sieht so aus:
Delphi-Quellcode:
Gruß
procedure TForm1.serverExecute(AThread: TIdPeerThread);
var post: string; begin post := athread.connection.readln; memo2.Lines.Add(post); athread.Connection.WriteLn(post); end; Spurius |
Re: Nachricht kommt nicht bei allen Clients an
Hi,
das OnExecute Ereignis wird in einem extra Thread ausgeführt, deshalb ist es gefährlich auf VCL Komponenten zuzugreifen (memo2.Lines.Add(post)). Verwende dazu AThread.Synchronize. AThread.Connection steht für Verbindung des einen Threads und nicht für alle Verbindungen. In der IdTCPServer1.Threads TThreadList sind alle Threads des Severs. |
Re: Nachricht kommt nicht bei allen Clients an
Hallo,
das ich dem Memo vom Server Strings hinzufüge geht, aber ich verstehe nicht, wie ich auf die threadlist zugreifen kann :?: Eigentlich müsste das ja so aussehen server.threads.writeln(...); Wie muss ich das denn machen? Gruß Spurius |
Re: Nachricht kommt nicht bei allen Clients an
Zitat:
Zitat:
|
Re: Nachricht kommt nicht bei allen Clients an
Ok,
ich hab in der Hilfe nachgeschaut und gesehen, dass man die threadlist erst locken muss. aber wie sieht konkret der code aus, um mit allen threads aus der liste etwas zusenden? Das muss ja irgendeine Schleife sein. Gruß Spurius |
Re: Nachricht kommt nicht bei allen Clients an
Du lockst die Liste und bekommst eine TList. Wie eine TList funktioniert weißt du, oder?
Ungefähr so wird's gehen:
Delphi-Quellcode:
myList:=Server.Threads.Lock;
try for i:=0 to myList.Count-1 do TIdThread(myList.Items[i]).Connection.WasWeißIch(... finally Server.Threads.UnLock; end; |
Re: Nachricht kommt nicht bei allen Clients an
:warn: Ich allerdings würde nicht (und mach es nicht) mit zig Threads arbeiten. Stell Dir vor, Du hast 250 Nutzer im Chat.. oder 1000. Weißt Du, was dann mit Deinem Windows passiert ? -> :kotz:
Ich arbeite bei mir auf Arbeit an einem Service, der a) ein Chat-System hat (ähnlich ICQ) und b) noch x beliebig viele andere Services hostet die über TCP kommunizieren (arbeite in einem großen Verlag). Ich komme da mit einem Thread aus. und es läuft wunderbar :dancer: MyRealName |
Re: Nachricht kommt nicht bei allen Clients an
Hallo,
der Chat funktioniert jetzt wunderbar. Nochmal Danke für die viele Hilfe! Gruß Spurius |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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