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