0

こんにちは、クライアント/サーバーでIndyコンポーネントを使用して、デルファイで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のパラメーターを True に設定していますWrite(TStream)。これにより、ストリーム データを送信する前にストリーム サイズを送信するように指示されます。ReadStream()また、ストリーム データを読み取る前にストリーム サイズを読み取るように指示しています。したがって、Indy は、ReadStream()終了する前に既にサイズを検証しています。手動で行う必要はまったくありません。

于 2013-05-16T13:53:34.040 に答える