Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.061 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

indy9 Beispiel BasicClientServer Server sendet Nachricht an alle Clients

  Alt 29. Sep 2012, 10:00
Hallo Zusammen,


Ich schaue mir gerade das aus Indy9 das Beispiel BasicClientServer an.
Für mein Vorhaben ist das genau was ich brauche. Allerdings benötige ich noch eine Möglichkeit
eine Nachricht an alle angemeldete Clients zu versenden.

Grundsätzlich geht das senden an alle Clients vom Server aus:

Code:
procedure TfrmMain.btn1Click(Sender: TObject);
var ClientList: TList;
    i:Integer;
begin
  ClientList := IdTCPServer.Threads.LockList;
  for i := 0 to ClientList.Count-1 do
    TIdPeerThread(ClientList.Items[i]).Connection.WriteLn('Nachricht an Alle');
  IdTCPServer.Threads.UnlockList;
end;
Doch leider wird der Client nicht getriggert.
Also muss der Client in einem Thead ReadLn durchführen um die Messages von Server zu bekommen.
Thread deshalb weil ansonsten der Main Thread blockieren würde.

Eine Alternative wäre auf jeder Seite einen Client und ein Server zu implementieren. Doch das halte
nur bei bestimmten Anwendungen für Sinnvoll.

Ich frage mich an dieser Stelle warum der Client eigentlich kein Event hat OnReceiveData hat?
Oder gibt es doch eine Möglichkeit dass der Client getriggert wird wenn der Server ihn Daten gesendet hat?

Gruß Kostas
  Mit Zitat antworten Zitat