1

fread()、fwrite()、send()、recv() などの通常の関数を使用して、ファイル転送用の UNIX ソケットを介して ftp コマンド GET および PUT を実装しようとしています。

テキスト ファイルでは問題なく動作しますが、バイナリ ファイルでは失敗します (diff によると、「バイナリ ファイルが異なります」)。

以下に関するご提案をお待ちしております。

  1. バイナリデータを読み書きするための特定のコマンドはありますか?
  2. diff を使用してバイナリ ファイルを比較できますか?
  3. メモリのチャンクでバイナリ部分を送信することは可能ですか?
4

2 に答える 2

3

FTPプロトコルには、テキストとバイナリの2つの動作モードがあります。FTPクライアントで試してみてください-切り替えるためのコマンドはASCIIとBINだと思います。ただし、テキストモードは、CR/LFペアで思い出したものからのみ効果があります。

于 2011-04-26T11:43:42.113 に答える
0

ファイルから読み取り、ファイルのデータをソケットに書き込む場合は、必ずファイルをバイナリ モードで開いてください。

はい、diff を使用してバイナリ ファイルを比較できます。通常は-q オプションを使用して実際の違いの出力を抑制しますが、これはバイナリ ファイルではほとんど意味がありません。md5またはcmpがある場合は、それらを使用することもできます。

于 2011-04-26T13:13:03.673 に答える