0

ソケットを介していくつかのファイルを送信する必要があり、その方法を理解しようとしています。単一のファイルを送信するのは非常に簡単ですが、接続したら、ファイルの一意の ID を表す整数を送信し、その後ファイルのコンテンツを送信する必要があります。完了したら、ファイルの内容を含む別の ID を送信する必要があります。だから私はこのようなものが必要です:

  1. 接続
  2. 送信するファイルがない場合は 6 へ
  3. 送信ID
  4. ファイルを送信
  5. 2へ
  6. 接続を閉じる

ファイルを送信するために私が見つけたソリューションのほとんどは、byte[] をバッファとして使用しており、ID とファイルの内容を区別する方法がわかりません。私に何ができる?

4

1 に答える 1

2

TCP ストリームを区切る必要があるため、1 つのファイルの開始時と終了時を知ることができます。独自のプロトコルを作成する必要があります。

簡単なことの 1 つは、最初にファイル ID とファイル サイズを含む小さな固定長のヘッダーを送信することです。

例えば

  • 「file-id」に 4 バイトのファイル ID を送信します
  • 送信 'file-size 8 バイトのファイル サイズ
  • 'file-size' バイトのファイル コンテンツを送信します。

これは、同じ TCP ソケット上で必要な回数だけ繰り返すことができます。

受信側は次のことを行う必要があります。

  • 4 バイトを読み取り、それをファイル ID として解釈します
  • 8 バイトを読み取り、それをファイル サイズとして解釈します
  • ファイルの内容である 'file-size' (前のステップから) bytes を読み取ります。

すべてのバイトが受信されると、最初からやり直して、file-id と file-size の新しいヘッダーを読み取ります。

于 2013-06-25T09:12:46.073 に答える