2012-04-12 3 views
6

Ho un TIdHttpServer che deve mantenere aperta la connessione per inviare alcuni comandi ai client. Voglio ripetere quando premo un pulsante e invio un comando a tutti i client connessi.Invia comando a tutti i client connessi

Come posso fare questo?

+2

Versione di indy? – RRUZ

+0

Io uso delphi xe 2 con indy 10 – opc0de

risposta

10

È possibile utilizzare la proprietà Contexts per ottenere i client e quindi utilizzare lo IOHandler di ogni client che è possibile inviare un messaggio.

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;