0

您好,我正在尝试使用带有客户端/服务器的 Indy 组件通过带有 delphi 的 TCP 发送文件

我设法正确发送和接收文件,问题是在发送文件之前我想发送它的大小以及在我得到服务器后比较它。

现在我将文件从客户端发送到服务器。

客户:

Ms := TMemoryStream.Create;
  Ms.LoadFromFile('cliente.exe');
  Ms.Position := 0;

  Result := True;
  Client.IOHandler.LargeStream := True;
  try
    Client.IOHandler.Write(ms, 0, True);// (Ms, 0, true);
  except
    Result := False;
  end;
  Ms.Free;

服务器:

 AStream := TFileStream.Create('C:\temp\file.exe', fmCreate + fmShareDenyNone);
    try
      AContext.Connection.IOHandler.LargeStream := True;
      AContext.Connection.IOHandler.ReadStream(AStream, -1,false);
    finally
      FreeAndNil(AStream);
      Memo1.Lines.Add('File received');
    end;

所以问题是我怎么能用文件发送文件大小?

4

1 回答 1

0

您的代码已经在发送文件大小。您将AWriteByteCount参数设置Write(TStream)为 True,这告诉它在发送流数据之前发送流大小。而且您要ReadStream()在读取流数据之前读取流大小。所以 Indy 已经在ReadStream()退出之前为你验证了尺寸。您根本不需要手动操作。

于 2013-05-16T13:53:34.040 回答