TIdTCPServer/TIdTCPClient发送数据的问题

                            
我想用TIdTCPServer/TIdTCPClient作网络连接并发送数据.   
  但是我发现每次客户端用WriteLn向服务器发送信息后,紧接着马上用WriteStream发送流式数据,则服务器上接收的时候(只用ReadStream)总会将上次发送过来的WriteLn串也接收到流里面.  
  那么是不是说使用TIdTCPServer/TIdTCPClient通信的时候,只要一端发送了数据另外一端就要使用相同方式接收一次数据才能不影响下一次接收呢?有没有办法可以将接收的数据缓冲区清除,使下次接收的时候不被影响?当然,一次通信完毕后就断开当然可以清除上次的数据缓冲区,但是我不想每次通信后断开该如何?  
  因为具体通信的时候可能服务器不知道客户端发送过来什么类型的数据,可能是字符串命令也可以能是流式数据,这个时候该如何接收?  
  比如:  
  客户端:  
                  NetClient.WriteLn('A   String   Command.');  
                  NetClient.WriteStream(AStream);  
  服务器:  
                  //NetServer.ReadLn;//如果不要这句而又不影响以下流的接收应该如何?  
                  NetServer.ReadStream(AStream);  
   
  还有ReadLn各个参数的意义是什么?有时候带参数的和不带参数的接收的效果不一样,甚至不能接收.使用默认参数值的效果是怎么样的?  
  比如我在TIdTCPServer端的OnExecute用:  
          Msg:=   AThread.Connection.ReadLn('',5);  
   
          if   Length(Msg)>0   then  
          begin  
                  ShowMessage(Msg);  
          end;  
   
  如果用   Msg:=   AThread.Connection.ReadLn;  
  有时Msg就根本为空,这是为何?  
   
  着急啊,希望大家多多指点,最好有个例子,赶着用.

查看回复

相关问题