2012-04-12 14 views
6

मेरे पास एक TIdHttpServer है, मुझे क्लाइंट को कुछ कमांड भेजने के लिए कनेक्शन को खोलना होगा। जब मैं एक बटन दबाता हूं और सभी जुड़े ग्राहकों को आदेश भेजता हूं तो मैं पुन: प्रयास करना चाहता हूं।सभी कनेक्टेड क्लाइंट्स को कमांड भेजें

मैं यह कैसे कर सकता हूं?

+2

इंडी का संस्करण? – RRUZ

+0

मैं इंडी 10 के साथ डेल्फी xe 2 का उपयोग करता हूं – opc0de

उत्तर

10

आप ग्राहकों को प्राप्त करने के लिए Contexts संपत्ति का उपयोग कर सकते हैं और फिर प्रत्येक ग्राहक के IOHandler का उपयोग करके आप एक संदेश भेज सकते हैं।

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;