我用TcpServer打开监听连接了别的机子后,就执行到这步了。
procedure TForm1.TcpServer1Accept(Sender: TObject;     
  ClientSocket: TCustomIpClient);   
  var
    s:string;
begin
    Memo1.Lines.Add('==开始接受数据:');
    s:=ClientSocket.Receiveln;   
    while s <> '' do
    begin
      Memo1.Lines.Add(s);
      s := ClientSocket.Receiveln;
    end;    Memo1.Lines.Add('==接收完毕!');end;但是显示了“==开始接受数据:”这句话之后就再也显示什么,连最后一句'==接收完毕!'都没有。
我看到其他例题都是再开辟一个线程,专门用于接收数据的,但是我搞不懂,都执行到“==开始接受数据:”这步了,那么接收不到数据的原因是什么?求解答!很急!谢谢!

解决方案 »

  1.   

    TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
      

  2.   

    TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
    我选择最后一个 应该是线程阻塞模式
    代码没错 我也这样和
    只要客户端TCPCLIENT发送信息 应该能显示了
      

  3.   

    TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
    我选择最后一个 应该是线程阻塞模式
    代码没错 我也这样用
    只要客户端TCPCLIENT发送信息 应该能显示了
      

  4.   

    后来我用 bmThreadBlocking 模式
    出现这样的问题
    {自己写定义一个线程用于获取接收信息}
      TTST = class(TThread)
      private
      public
         //定义一个字符串列表
         ListBuffer :TStringList;
         //定义一个字符串
         TargetList :TStrings;
         //定义一个用于实现把获取的信息放到列表中的过程
         procedure AddToList;
        //创建线程
        constructor Create(CreateSuspended: Boolean);
        //执行线程
         procedure Excute;
        //中断线程
        procedure Terminate;
      end;不知道怎么回事呀
    还有,这句话是什么意思啊
    当一个重载的例程被声明为forward(向前声明)或接口声明时,其定义声明必需重申例程的参数列表。