InUdpServer控件中的SendBuffer我想应该不是多线程方式处理的。如果我发送,我可以开多个线程来发送,但是我想知道该控件的OnRead事件是不是多线程方式处理:也就是说,有几个用户同时发送给该监听端口消息时。OnRead事件是对这几个用户一个人一个线程进行处理,还是排队先后来处理。急,在线等待。本人QQ:331656

解决方案 »

  1.   

    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);ABinding就是对应线程的
      

  2.   

    >>OnRead事件是对这几个用户一个人一个线程进行处理,还是排队先后来处理?一个人一个线程进行处理
      

  3.   

    该控件有个属性ThreadedEvent决定是否使用多线程
      

  4.   

    看源码,InUdpServer里有个监听者线程procedure TIdUDPListenerThread.Run;
    var
      PeerIP: string;
      i, PeerPort, ByteCount: Integer;
    begin
        ...
          if FServer.ThreadedEvent then begin
            UDPRead;
          end else begin
            Synchronize(UDPRead);
          end;
        ...
    end;所以你要在OnRead事件线程方式处理?需要把ThreadedEvent设为true,然后在OnRead事件处理程序里自己写个线程处理。