我想知道使用Indy 10 TidTCPServer處理「一對多」通信的好方法,即從客戶端接收流,並立即將此數據寫入所有連接「觀衆」。這裏的要點是數據的來源來自客戶端(而不是服務器)。Indy 10/TidTCPServer /從一個客戶端流到很多
在OnExecute過程,我不能從那裏使用LOCKLIST只是凍結當前線程,因此不會幫忙寫於其它連接的客戶端...
我應該使用不同的線程來處理緩衝區交換?
緩衝數據主要是字節,客戶端已連接,比方說3(#1發送,#2,#3應該接收)
下面是在我的OnExecute程序:
var
lst: Tlist;
[..]
lst := idTcpServer1.Contexts.LockList;
try
for i := 1 to lst.Count-1 do
begin
try
TIdContext(lst.Items[i]).Connection.IOHandler.Write('Test');
except
end;
end;
finally
idTcpServer1.Contexts.UnlockList;
end;
你是如何使用LockList的?請顯示一些代碼。什麼類型的數據?你已經有聯繫了嗎? –