现在有服务器向客户端连续发送N条消息,我在客户端要开启线程来接收,请大家给个客户端开启线程,接受消息的例子啊,小弟感激不尽!!

解决方案 »

  1.   

    使用什么协议啊,看看Indy里的控件有你需要的;另外就是开个线程监视端口而已
      

  2.   

    TCP/IP协议,用的是Indy里的TCPCLIENT
      

  3.   

    procedure TRecThread.Execute;
    var
      ires,i,j : integer;
      recMsg : TMyMsg;
      stmp,tmpName,tmpRealName,tmpDept,pointDept : String;
      sNode,ss : TTreeNode;
    begin
      { Place thread code here }
      FreeOnTerminate := True;  while ((not Terminated) and DM.tcpLog.Connected) do
      begin
        ires := DM.tcpLog.ReadFromStack; //........
        if ires > 0 then
        begin
          DM.tcpLog.ReadBuffer(recMsg,sizeof(recMsg));
    ...
    接收的方法很多,自己选择
      

  4.   

    我有一个 UDP的接收消息的线程  ,其他协议的也是这个原理 都差不多.具体代码如下:
     TClientHandleThread = class(TThread)
      private
        CB: string;
        procedure HandleInput;
      protected
        procedure Execute; override;  end;procedure TClientHandleThread.Execute;
    begin
      inherited;
      while not Terminated do
      begin
        try
          Application.ProcessMessages;
          CB := UDPMainForm.UDPClient.ReceiveString();
          Synchronize(HandleInput);
        except
        end;
      end;
    end;procedure TClientHandleThread.HandleInput;
    begin
      if Trim(CB) <> '' then
        UDPMainForm.mmoRecive.Lines.Add(FormatDateTime('yyyy-mm-dd hh:mm:ss', Now)
          +',收到服务器发来的消息:' +cb);
    end;