私はasioを使用する際に問題があります。私のクライアント/サーバーアプリケーションは、同期通信だけを必要とします。したがって、ブーストホームページのシンクロの例を使用して、データを送受信する手順を2つ設定しました。コードは次のとおりです。ブースト.Asio同期通信
これらの手順は、ブーストの例から抽出されたコード行のラッパーです。私のテストアプリケーションで
、クライアントは
std::string szDate;
vReceive(socket, szDate);
vSend(socket, std::string("Chop Suey!"));
vReceive(socket, szDate);
vSend(socket, std::string("Halo"));
を呼び出し、サーバーだけで機能をテストするために
std::string message = make_daytime_string();
std::string szReceived;
vSend(socket, message);
vReceive(socket, szReceived);
vSend(socket, message);
vReceive(socket, szReceived);
を呼び出します。問題は、私が次のように書いたように、最初の情報交換後に両方のアプリケーションがフリーズすることです。picture。 vSend()がサーバ側で終了している間に、クライアント側で vReceive()プロシージャが終了していないようです。だから誰にも何のアイデアはありますか?何が間違っているのでしょうか?
誰かが問題を再現したい場合は、完全なソースをasio_problem.rarファイルにある同じサーバーにアップロードしました(新しいメンバーとして1つのハイパーリンクを持つことができます)。
ありがとうございました。 ダニエル