2012-04-12 11 views
6

Ich habe einen TIdHttpServer Ich muss die Verbindung offen halten, um einige Befehle zurück an die Clients zu senden. Ich möchte iterieren, wenn ich eine Taste drücke und einen Befehl an alle verbundenen Clients sende.Sende Befehl an alle angeschlossenen Clients

Wie kann ich das tun?

+2

Version von Indy? – RRUZ

+0

Ich benutze Delphi Xe 2 mit Indy 10 – opc0de

Antwort

10

Sie können die Contexts Eigenschaft verwenden, um die Clients zu erhalten und dann die IOHandler jedes Clients verwenden, die Sie eine Nachricht senden können.

Var 
    Clients : TList; 
    i : integer; 
begin 

    if not Assigned(IdTCPServer1.Contexts) then exit; 

    Clients:=IdTCPServer1.Contexts.LockList; 
    try 
    for i := 0 to Clients.Count-1 do 
     try 
     TIdContext(Clients[i]).Connection.IOHandler.Write(LBuffer);//LBuffer is a TBytes with the data to send 
     except 
     ... 
     end; 
    finally 
    IdTCPServer1.Contexts.UnlockList; 
    end; 

end; 
Verwandte Themen