AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Clients verwalten?

Ein Thema von rtky_trunks · begonnen am 9. Okt 2005 · letzter Beitrag vom 9. Okt 2005
Antwort Antwort
rtky_trunks

Registriert seit: 5. Mai 2005
Ort: Breisach am Rhein
16 Beiträge
 
Delphi 7 Enterprise
 
#1

Clients verwalten?

  Alt 9. Okt 2005, 13:31
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
Matrix is a Puffer like a Net-Port
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Clients verwalten?

  Alt 9. Okt 2005, 15:41
1, Verwalte Clients in TObjectList

2, Benachrichtigung über Schleife:
Delphi-Quellcode:
procedure FireMsgToClients;
begin
  for i := 0 to MyClientList.Count - 1 do
    MyClientList[i] as (TypvonClientObjekt).Send....
end;
3, Bei Abmeldung aus TObjectLIst austragen
MyClientList.Delete(Abmeldenter Client) Code stellt nur Grundgerüst dar.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Clients verwalten?

  Alt 9. Okt 2005, 16:04
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
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
rtky_trunks

Registriert seit: 5. Mai 2005
Ort: Breisach am Rhein
16 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Clients verwalten?

  Alt 9. Okt 2005, 16:14
Hallo

Aehm, ja, danke.. aber..

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.. .. 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??

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.
Matrix is a Puffer like a Net-Port
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Clients verwalten?

  Alt 9. Okt 2005, 16:32
Zitat von rtky_trunks:
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);
AThread trägst Du in die Verwaltungsliste aus. Und es gibt auch einen ServerDisconnect mit den gleichen Parameter und da trägst Du in wieder aus der TObjectList aus.

Zitat von rtky_trunks:
hmmm. Und wie geht das dass ich nur ein bestimmten client eine Nachricht schicken kann?
Bitte erklaer(t) mir dass.
z.B. an den 2ten-Client in deiner Objektliste
(MyObjectList[1] as TIdPeerThread).Send(....) (Ich hoffe so heißt die SEnde-Methode, hab gerade keine Delphi offen).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Clients verwalten?

  Alt 9. Okt 2005, 16:34
Bei mir hat dieses Chat Demo sehr gut funktioniert und effizient gearbeitet (vom Code her)

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#7

Re: Clients verwalten?

  Alt 9. Okt 2005, 21:58
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:
http://www.delphipraxis.net/internal...ct.php?t=62893

Auch wenn ich für die records kritisiert wurde funktionierts recht gut.

Arnulf
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz