なぜstream.flush();
うまくいかないのですか?
boost::asio::ip::tcp::iostream stream("localhost","5000");
assert(stream.good());
stream << 1;
stream.flush();
while(true);
ループが削除され、行が実行された場合にのみフラッシュされます
boost::this_thread::sleep(boost::posix_time::seconds(1));
(かなり後で)。
ありがとう
更新:さらにデバッグを行いましたが、実際には問題はフラッシュコマンドではありません。コードを netcat サーバーに接続させると、すべて正常に動作します。問題は、クライアントとサーバーの両方が同じプロセスにあることだと思います(1つはサーバーとして機能し、もう1つはクライアントとして機能する2つの脅威を作成します)。それらを別々のプロセスに入れるとすべて正常に動作しますが、両方が同じプロセスにあると、スリープが呼び出されるまで転送が停止します... (これはテスト上の理由のみであり、後で両方が異なるサーバーで実行されます)。
プラットフォームは WindowsXP です。
なぜこれが起こっているのですか?