C++ でソケットを使用してクライアント サーバー アプリケーションを作成しています。
通信のプロトコルは基本的に次のとおりです。
- クライアントがサーバーに接続します。
- クライアントは ASCII コマンドをサーバーに「送信」します。
- サーバーはコマンドをリモートで実行し、結果を取得してクライアントに返します。
結果は、数メガバイトのデータになる可能性があります。すべての結果がクライアントに送信されたら、サーバーがクライアントに完了したことを通知するようにします。
closesocket() の最善の方法は何ですか? それとも、結果がこれ以上ないことをクライアントに示すメッセージを送信する必要がありますか? クライアントはソケットを閉じるかどうかを決定できますか? ソケットを閉じることの欠点は、クライアントが別のコマンドを実行したい場合に新しい接続を確立する必要があることですが、サーバーからメッセージを送り返すことの欠点は、クライアントがすべての recv をスキャンして、結果が正しいかどうかを判断する必要があることです。完了しました。
ベストプラクティスはどれですか?