ここでは、ソケット知識の Java 言語を使用します。クライアントを使用してサーバーに接続し、必要なファイルを受信します。問題は、クライアントが受信したファイルが終了したことをどのように知ることができるかということです。
3 に答える
クライアントとサーバーの間に何らかのプロトコルを確立します。クライアントが終了後に既知の終了値をソケットに書き戻すと、サーバーはクライアントの状態を認識します。この問題を解決するには多くの方法がありますが、提案されているのは「センチネル値」戦略です。
制御接続 (FTP はこのように動作します) を介してある種の「完了シグナル」を送信するか、「転送の終了」も通知するソケットを切断します。その場合、反対側のソケットの「ReadByte()」は「0」を返します。
正しいバイト数を転送すると、ファイルが送信されます。その「正しい番号」は、プロトコルに応じてさまざまな方法で取得できます。
TCP/IP 以外のプロトコルを使用してソケット経由でデータを送信している場合、クライアントは 0 バイトが表示されるまでストリームを読み取るだけです (これは、サーバーが接続の終わりをシャットダウンしたことを意味します)。これは、サーバーがファイルを送信し、すぐにソケットをシャットダウンすることを意味することに注意してください。(少なくともすぐには「閉じません」。ただ「シャットダウン」します。) 接続ごとに 1 つのファイル。ある種のファイル転送プロトコルを使用しないために支払う料金の一部。
確認したい場合は、おそらくクライアントにファイルの内容のハッシュを計算させ、それを自分の側で計算したものと再確認させることができると思います。しかし、これを行う一般的に使用されるプロトコルを知りません。