Stream 如何通过TIdTCPServer/TidTCPClient一次发送/接收多个文件?

Stream 如何通过TIdTCPServer/TidTCPClient一次发送/接收多个文件?,stream,delphi-7,indy-9,Stream,Delphi 7,Indy 9,这是我发送单个文件的编码 procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread); begin ... try ... AFileStream := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); try AThread.Connection.WriteStream(AFileStream, true, true)

这是我发送单个文件的编码

procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
begin
  ...
  try
    ...
    AFileStream := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone);

    try
      AThread.Connection.WriteStream(AFileStream, true, true);
    finally
      AFileStream.Free;
    end;
  except
    AThread.Connection.WriteLn('N');
  end;
  AThread.Connection.Disconnect;
end;
如果我一次要发送多个文件,请建议我如何发送

是否可以使用以下命令立即阅读

procedure TForm1.ReadImageFromServer(ACmd: string);
begin    
  with IdTCPClient1 do begin
    ...
    AStreamSize :=  ReadInteger;
    ReadStream(AMemStream, AStreamSize, false);
    ...
  end;
end;

通过一个连接同时发送多个文件的唯一方法是将文件写入小块,这样您可以将它们混合在一起—发送文件a的块1,然后发送文件B的块1,然后发送文件a的块2,依此类推—每个块描述它所属的文件。否则,您必须通过单独的连接发送每个文件。

请帮助我进行一些示例编码,我不知道如何使用此技术进行编码:(事实上,每个文件都很小,大约3K,把它们放在一个文件流中怎么样,我的意思是,我不知道这是可能的,尤其是从流中单独取出它们的可能性。把所有文件放在一个流中对你没有帮助。你可以一个接一个地发送每个文件,这是非常重要的。)编写代码会容易得多。为什么要同时发送多个文件,而不是一次发送一个文件?你想实现什么?我只是“想”一次发送多个文件可以提供更好的性能,我错了吗?对于发送几个小文件,处理开销可能不值得编码。但是对于发送许多大文件,它可以提供一些性能提升,但在更复杂的编码代码中。例如,HTTP 2.0和SPDY提供了多路复用和管道使多个请求和多个文件可以同时在单个连接上运行。