应该先取得你要发送至客户端的 TIdPeerThread
AThread:TIdPeerThread
获得TIdPeerThread方法很多,如果在IdTCPServerExecute事件中,IdTCPServerExecute会将其用参数方式带入,可以直接使用。
IdTCPServerExecute(AThread: TIdPeerThread);
如果要在其它地方引用,应当在IdTCPServerConnect(AThread: TIdPeerThread);事件中对上线的机器进行链表记录。
或者直接用:
Var
List : Tlist;
List := IdTCPServer.Threads.LockList;
TidPeerThread(List.Items[i]).Connection.Write(Cmd);
这个是发送命令到所有客户端的代码:
procedure SendCmdToAll(CMD:String);
var
List: TList;
I: Integer;
begin
List := IdTcpServer.Threads.LockList;
try
for I := 0 to List.Count - 1 do
begin
try
TIdPeerThread(List.Items[I]).Connection.Write(CMD);
except
on E: Exception do
begin
TIdPeerThread(List.Items[I]).Stop;
end;
end;
end;
finally
IdTcpServer.Threads.UnlockList;
end;
end;
//总之都是利用TIdPeerThread的方法,所以能得到TIdPeerThread的话就没有任何问题。
AThread.Connection.Write(Cmd);