现在有多个客户端连接到服务器端,我怎样在服务端主动向指定的客户端发送消息呢?

解决方案 »

  1.   

    你可以根据客户端的IP或机器名进行判断,是否要给该客户端发送消息。
    在IdTcpServer 的 ONExecute 里写事件进行处理因为IdTcpServer 是线程安全的,每个客户端连接就是一个线程,你可以获取请求连接客户端的IP和机器名。具体例子可以找一个INDY提供的DEMO,里面有一个传输IMAGE 的例子。
      

  2.   

    var
      pThread:TIdPeerThread;
    begin
      with IdTCPServer1.Threads.LockList do
      begin
        pThread:= TIdPeerThread(Items[0]);
        pThread.Connection.Socket.Binding.PeerIP;
        pThread.Connection.Socket.Binding.PeerPort;
      end;
    end;
    通过pThread获得客户端ip端口等信息,再发送