![]() |
Clients verwalten?
Hallo Leute.
Ich hab nen problemchen. :( Ich hab mir nen Server gebastelt mit ner Indy komponente(TCPServer) und nen Client mit dem gegenstueck^^(TCPClient). Nun moecht ich, wenn mehrer clienten sich anmelden, sie verwalten koennen. Habt ihr vllt ne Idee wie ich das machen soll? Mir faellt nichts ein. Ich moechte dann gerne eine Nachricht an einen bestimmten client schicken oder sonstiges. Mit einem Client ist das ja nicht sonderlich schwer, da es niemand anderen gibt dem ich das schicken koennt. Ich hab es auch schon geschafft alle angemeldeten clienten in ein ListBox zu speichern. Aber ich weiss net weiter.. Wenn sich jetzt einer abmeldet und ein andere an. und dass ein paar mal. Dann gibt das, das groesste durcheinander. Ich hoffe ihr koennt mir Helfen. Gruss MArc |
Re: Clients verwalten?
1, Verwalte Clients in TObjectList
2, Benachrichtigung über Schleife:
Delphi-Quellcode:
3, Bei Abmeldung aus TObjectLIst austragen
procedure FireMsgToClients;
begin for i := 0 to MyClientList.Count - 1 do MyClientList[i] as (TypvonClientObjekt).Send.... end;
Delphi-Quellcode:
Code stellt nur Grundgerüst dar.
MyClientList.Delete(Abmeldenter Client)
|
Re: Clients verwalten?
Hallo,
ich habe 2 Vorschläge: 1. Die Indy 9 Chat Demo ist da sehr aufschlussreich. 2. Wenn es auch über die Sockets sein darf: in der OpenSource Spalte finden sich die ProfessionalConnect Komponenten. Florian |
Re: Clients verwalten?
Hallo
Aehm, ja, danke.. aber.. :shock: Kannst du mir bitte genau erklaeren wie ich das machen kann? Was muss ich machen wenn ein Client connected? also da: procedure TForm1.ServerConnect(AThread: TIdPeerThread); und aehm.. :gruebel:.. Wie funktioniert das genau? ICh mein ein Client verbindet sich und ,ja, und dann?? Dann wird irgendwas von ihm in die Liste eingetragen ? wenn ja was? ne IP adresse, oder mac adresse?? :gruebel: hmmm. Und wie geht das dass ich nur ein bestimmten client eine Nachricht schicken kann? Bitte erklaer(t) mir dass. Gruss MArc An den neuposter^^: Die indy9 demos hab ich mir angeschaut und hab da auch ein Teil uebernommen. Aber hab da viele Probleme wenn sich ein Client(oder 2, 3, 4 ...) disconnecten und vllt 1 neu anmeldet. Dann gib das ein total durcheinander und naja dann stuertzt das programm ab mit 1000... Fehlermeldungen. |
Re: Clients verwalten?
Zitat:
Zitat:
Delphi-Quellcode:
(MyObjectList[1] as TIdPeerThread).Send(....) (Ich hoffe so heißt die SEnde-Methode, hab gerade keine Delphi offen).
|
Re: Clients verwalten?
Bei mir hat dieses Chat Demo sehr gut funktioniert und effizient gearbeitet (vom Code her)
Florian |
Re: Clients verwalten?
Du speicherst hier die thread objekte die dir vom indy zur verfügung gestellt werden.
Unpraktischerweise muß man bei indy die threads selbst verwalten. Wenn also ein cient verbindet, dann macht indy eine neue verbindung für den client auf und übergibt diese einem thread. Den mußt du dir also irgendwo speichern. Am bessten speicherst du dir gleich noch ein paar userdaten dazu, damit du später noch weißt welcher user welcher ist. und nachrichten kannst du dann so verschicken wie Bernhard Geyer geschrieben hat. send - oder sendbuffer oder was auch immer es da gibt, gibts schon als methode für das thread objekt. Im prinzip müsstest du hald etwas ähnliches machen wie ich es mit den tsockets gemacht hab. Nur mußt du die threads hald selber verwalten bei Indy. Vielleicht bekommst du eine idee was ich mein, wenn du dir das hier durchliest: ![]() Auch wenn ich für die records kritisiert wurde funktionierts recht gut. Arnulf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 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