分享

IdTcpServer AThread

 独孤求财 2012-03-20

IdTcpServer AThread

时间:2011-5-26来源:yang 作者: peng点击: 81次

应该先取得你要发送至客户端的 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);

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多