AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Nachricht kommt nicht bei allen Clients an
Thema durchsuchen
Ansicht
Themen-Optionen

Nachricht kommt nicht bei allen Clients an

Ein Thema von Spurius · begonnen am 30. Nov 2003 · letzter Beitrag vom 2. Dez 2003
Antwort Antwort
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#1

Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 15:01
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:
procedure TForm1.serverExecute(AThread: TIdPeerThread);
var post: string;
begin
  post := athread.connection.readln;
  memo2.Lines.Add(post);
  athread.Connection.WriteLn(post);
end;
Gruß
Spurius
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#2

Re: Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 16:48
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.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#3

Re: Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 19:08
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
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#4

Re: Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 19:23
Zitat von Spurius:
Hallo,
das ich dem Memo vom Server Strings hinzufüge geht,
solange nur ein Thread auf das Memo zugreift...
Zitat von Spurius:
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?
Delphi OH -> TThreadList
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#5

Re: Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 20:00
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
  Mit Zitat antworten Zitat
Kamil

Registriert seit: 17. Aug 2002
178 Beiträge
 
#6

Re: Nachricht kommt nicht bei allen Clients an

  Alt 30. Nov 2003, 20:05
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;
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
675 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Nachricht kommt nicht bei allen Clients an

  Alt 2. Dez 2003, 13:09
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 ? ->

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

MyRealName
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#8

Re: Nachricht kommt nicht bei allen Clients an

  Alt 2. Dez 2003, 13:44
Hallo,
der Chat funktioniert jetzt wunderbar.
Nochmal Danke für die viele Hilfe!
Gruß
Spurius
  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 19:42 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