D6下Indy的TCPServer控件的一个处理问题 ( 积分: 100 )

  • 主题发起人 主题发起人 zhaoxueli
  • 开始时间 开始时间
Z

zhaoxueli

Unregistered / Unconfirmed
GUEST, unregistred user!
indy的IDTcpServer控件的execute事件中要处理各个客户端来的数据以
作相应的处理,假如一个客户端(假设为A)需要发送的数据量太大而需分次发送,此时其他的客户端在其间有数据传过来,怎么对A端进行数据的拼接
而接收完整的数据?
Procedure TForm1.IDTcpServerExecute(AThread:TIdpeerThread)
var
recv:string;
begin
recv:=Athread.Connection.CurrentReadBuffer; //比如此时是在收A的数据,当A发完一部份后,其他客户端的数据进来,此时recv又变成其他客户端
来的数据,此时如果用AThread.Writeln回复的也是最新进来的客户端,怎样达到各客户端数据收完整后给其做相应回复?
 
indy的IDTcpServer控件的execute事件中要处理各个客户端来的数据以
作相应的处理,假如一个客户端(假设为A)需要发送的数据量太大而需分次发送,此时其他的客户端在其间有数据传过来,怎么对A端进行数据的拼接
而接收完整的数据?
Procedure TForm1.IDTcpServerExecute(AThread:TIdpeerThread)
var
recv:string;
begin
recv:=Athread.Connection.CurrentReadBuffer; //比如此时是在收A的数据,当A发完一部份后,其他客户端的数据进来,此时recv又变成其他客户端
来的数据,此时如果用AThread.Writeln回复的也是最新进来的客户端,怎样达到各客户端数据收完整后给其做相应回复?
 
在indy中是给每个连接建一个IdpeerThread,只需要处理这个就行了,除非你是每发完一部分就断开然后再重新连接
 
接受答案了.
 
后退
顶部