我想做一个网络通信通讯,服务器端连接有50个客户端,那50个客户端同时向服务器端发送数据,服务器端要实时进行处理,目前,服务器端我使用idtcpserver,客户端使用idtcpclient。当客户端请求连接到服务器时,我知道idtcpserver自动创建一个线程。现在的问题是我怎么才能同时从对应的线程中获取相应客户端的数据,且把这些数据保存在一个数组中(要确保实时性)。

解决方案 »

  1.   

    先声明一个类.
    每启动一个接收线程的时候,
    Create一个接收类.这样行不?
    记得要Free
      

  2.   

    procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
    begin
      with AThread.Connection do
      begin
        //--把这个AThread保存起来,这个你就可一个把他理解成服务器和客户端的建立起来的数据链路
      end;
    end;
      

  3.   

    你可以使用TThreadList来保存TIdPeerThread,它是线程安全的
      

  4.   

    谢谢!
    to hongqi162 :假如现在客户端A发送了一串字符串过来,触发IdTCPServer1Execute(AThread: TIdPeerThread)事件,但如果此时客户端B同时也发送了一串字符串过来,此时触发的还是IdTCPServer1Execute(AThread: TIdPeerThread)事件,那该如何处理呢?能不能具体一点。
    to unsigned :目的就是采集各客户端的数据
      

  5.   

    to unsigned 
    “而你只需要接受服务员的报告,而不是去理会当前哪一服务员为哪一名顾客服务”你的比喻说的太棒了,那么怎么能够实时的,同时的获取两个客户端的数据,然后对这两个客户端的数据进行比较呢,两个客户端数据的比较这个事件应该写在哪里呢?
      

  6.   

    to unsigned :你讲的很抽象,你能不能针对“同时的获取两个客户端的数据,然后对这两个客户端的数据进行比较呢,两个客户端数据的比较这个事件应该写在哪里呢”给个事例代码看看