使用TCP从客户端发送文件到服务器知道文件大小Delphi

时间:2013-05-16 09:15:15

标签: delphi tcpclient indy10

您好我试图使用带有客户端/服务器的Indy组件通过TCP与delphi一起发送文件

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

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

客户端:

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;

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

1 个答案:

答案 0 :(得分:0)

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