私はBoost Asioの助けを借りてC++でクライアント/サーバーアプリケーションを作成しています。私は働いているサーバーがあり、サーバーのワークフローは私がよく理解しているものです。ブーストAsioでTCPソケット上で非同期書き込み操作を実行
クライアントアプリケーションは、Asioの例に示すように正常に接続を処理します。その後、サーバーとのハンドシェイクが交換されます。しかし、その後、ユーザーはサーバーに要求を送信できなければなりません。これは、パラダイムを理解する上で問題があります。
初期ワークフローは、このように少しのようになります:
OnConnected() { SendHandshake() }
SendHandshake() { async.write_some(handshake...), async_read_some(&OnRead) }
OnRead() { ReadServerHandshake() *** }
とユーザーの書き込み(MSG)を使用してメッセージを送信します:
Write (msg) { async_write_some(msg,&OnWrite), async_Read_some(&OnRead) }
OnWrite() {}
EDIT:をより明確にするために、質問を言い換え
初期ハンドシェイクが完了した後、クライアントはservに要求を送信するためにのみ使用されますそれは返事を得るでしょう。したがって、たとえば、ユーザーが書き込みを送信します。クライアントは読み取り操作が完了するのを待って、応答を読み取り、何かを実行します。次のユーザー書き込みは、例えば5分後にのみ行われます。最後の返信読み取りと次の書き込みの間に未処理の非同期操作がないため、io_serviceはその間に動作しますか?
私はこれを試してみます、ありがとうございます。 – skali