0

基本的なロジックは次のとおりです。

メインスレッド:

for(;;) {
ソケット
async_read head(パケットの長さ) を受け入れ、head_handler
io_service.run() にバインド }

head_handler (非スレッド):

async_read body (head から読み取った長さを使用)、body_handler にバインド

body_handler (非スレッド):

メッセージを Request オブジェクト (カスタム クラス) に解析します。
リクエストを request_pool にプッシュする

読み取りスレッド:

for(;;) {
request_pool が空でない場合 (それ以外の場合はロック) { Request によって記述されたアクションを実行 } }

したがって、上記のロジックを使用した単純なエコー サーバーがあります。渡されたメッセージはすべて印刷されます。ただし、最初のメッセージのみが表示され、他のすべてのメッセージには「xxx.xxx.xxx.xxx が接続されました」というメッセージが正しく印刷されますが、メッセージは印刷されません。

4

1 に答える 1