c/s结构
server 端
采用idtcpserver控件
procedure Tfrm_Server.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  cmd: string; //接收到客户端的字符串信息
  ASize: Integer; //需要传输的流大小
begin
  with AThread.Connection do //已经连街上的一个进程
  begin
    cmd := UpperCase(ReadLn); //客户端发送的命令字符串
    if cmd = 'BEGIN' then //开始传输
    begin
      //告诉远程传输文件的大小和文件名
      WriteLn(Format('%d|%s', [AFileStream.Size, ExtractFileName(path)]));
      StatusBar1.SimpleText := '准备传输...';
      Exit;
    end;
    if cmd = 'END' then
    begin //传输完成
      StatusBar1.SimpleText := '传输完成...';
      Exit;
    end;
    if cmd = 'CANCEL' then
    begin //传输取消
      StatusBar1.SimpleText := '传输取消...';
      //保持传输状态
      Exit;
    end;
    //按照指定位置传输文件
    AFileStream.Seek(StrToInT(cmd), soFromBeginning); //转到文件流传输的位置
    ASize := Min(AFileStream.Size - AFileStream.Position, RecvBufferSize);
    //计算需要发送的大小,Min()函数在Math单元
    OpenWriteBuffer; //准备发送缓冲
    WriteStream(AFileStream, false, false, ASize);
    //注意这个函数的参数。
    CloseWriteBuffer; //结束发送缓冲
    StatusBar1.SimpleText := Format('当前传输位置%s/大小%d', [cmd, AFileStream.Size]);
    ProgressBar1.Position := ProgressBar1.Position + ASize;
  end;
end;
客户端
采用:idtcpclient控件procedure Tfrm_Client.SpeedButton1Click(Sender: TObject);
var
  cmd: string;
  ASize, TotalSize: Int64;
  AFileStream: TFileStream;
begin
  path:=ExtractFilePath(Application.Exename)+'BD_Jxxt.exe';
  IdTCPClient1.Host := Edit1.Text; //连接主机
  IdTCPClient1.Port := 9925; //端口
  IdTCPClient1.Connect; //连接
  try
    IdTCPClient1.WriteLn('BEGIN'); //提示服务器开始接收
    cmd :=IdTCPClient1.ReadLn;
    TotalSize := StrToInt(Copy(cmd, 0, Pos('|', cmd) - 1)); //分离文件大小
    //建立文件流准备接收
    AFileStream := TFileStream.Create(path, fmCreate);
    try //循环开始接受
      repeat
        IdTCPClient1.WriteLn(IntToStr(AFileStream.Size));//发送当前传输的位置
        ASize := Min(TotalSize - AFileStream.Size, IdTCPClient1.RecvBufferSize);
        //选择剩余大小和缓冲区大小小的一个作为传输的大小
        IdTCPClient1.ReadStream(AFileStream, ASize); //接收流
        StatusBar1.SimpleText := Format('当前传输位置%d/大小%d', [AFileStream.Size, TotalSize]);
        Application.ProcessMessages;
      until AFileStream.Size = TotalSize; //大小一致了表示结束
    finally
      AFileStream.Free; //释放文件流
    end;
    IdTCPClient1.WriteLn('END'); //提示服务器传输完成
    StatusBar1.SimpleText := '传输完成...';
  except
    StatusBar1.SimpleText := '连接服务器失败或者对方已经中断传输!';
  end;
  IdTCPClient1.Disconnect;
end;
请帮我看看,1个客户可以正常下载,为什么同时有2个或以上的客户就不行,怎么改啊