rt
TcpClient向TcpServer发送消息后,TcpServer成功接收并返回一条消息。我是在TcpServer的OnAccept事件中返回消息的
ClientSocket.SendBuf(retBuf,Length(retStr));
然后在TcpClient的OnReceive事件中接收这条消息,但是却接收不到。请问是哪里出了问题?

解决方案 »

  1.   

    ClientSocket.SendBuf(retBuf,Length(retStr));如果,你retBuf这个是数组的话,要用retBuf[0] 这样才成.
      

  2.   

    不是那个的问题,我用retBuf[0]仍然接收不到。
      

  3.   

    OnAccept执行完,这个ClientSocket就被释放掉了,也话还没有发完,对端就已经掉线了,自然收不到。
    SendBuf后面Sleep(2000)试试看。
      

  4.   

    还是不行。
    procedure TForm1.TcpClient1Receive(Sender: TObject; Buf: PAnsiChar;
      var DataLen: Integer);
    这个方法中是不是Buf是指向接收到的字符串的指针,DataLen是接收到的字符的个数?
      

  5.   

    TcpClient不同于TClientSOcket,不会自动去接收数据,必须程序去控制执行WaitForData/RecvXX,onReceive是在执行Recvxx后触发的。
      

  6.   

    如果你想要在有数据时得到通知的话,就需要调它的一个select方法(原来的控件是已经帮你做了这件事,这个需要你自己去做)。