2012-04-12 29 views
6

Tôi có một TIdHttpServer tôi phải giữ kết nối mở để gửi một số lệnh trở lại cho máy khách. Tôi muốn lặp lại khi tôi nhấn một nút và gửi lệnh đến tất cả các máy khách được kết nối.Gửi lệnh đến tất cả các máy khách được kết nối

Tôi làm cách nào để thực hiện việc này?

+2

Phiên bản khó xử? – RRUZ

+0

Tôi sử dụng delphi xe 2 với indy 10 – opc0de

Trả lời

10

Bạn có thể sử dụng thuộc tính Contexts để nhận khách hàng và sau đó sử dụng IOHandler của từng khách hàng, bạn có thể gửi tin nhắn.

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; 
Các vấn đề liên quan