本帖最后由 darlingpeng 于 2012-05-30 13:08:46 编辑

解决方案 »

  1.   

    OnExecute的处理代码如下:
    procedure Tfrm_main.tcp_serverExecute(AThread: TIdPeerThread);
    var
      ..........其它变量
      ar_buf: Array[1..500] of Char;
    begin
      for i := 1 to 500 do ar_buf[i] := #0;
      with AThread.Connection do
      begin
        n := ReadfromStack();
        if n >= 500 then n := 500;
        ReadBuffer(ar_buf, n);
        vs_recv := '';
        for i := 1 to n do
          vs_recv := vs_recv + ar_buf[i];
        str_ip := Socket.Binding.IP;
        str_port := IntToStr(Socket.Binding.Port);  .......中间有些其它处理..............
        AThread.Synchronize(proc_add_receive);
        Disconnect;
      end;希望大家帮助 !!!!!!
      

  2.   

    要在OnDisconnect中做什么处理?
    我什么也没有做
      

  3.   

    我在OnDisconnect中试过各种方式,如下:
       tcp_server.Threads.LockList.Remove(AThread);
       tcp_server.Threads.UnlockList; 
       AThread.Data:=nil;
    后,再连接收不到数据了。