stream.flush();
はなぜ機能しませんか?Boost.Asio iostream flush not working?
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サーバーに接続させると、すべて正常に動作します。問題は、クライアントとサーバーの両方が同じプロセスにあることです(2つの脅威を作成し、クライアントとしてサーバーとして動作させる)。私はそれらを別々のプロセスに置くとすべて正常に動作しますが、両方が同じプロセスにあると、スリープが呼び出されるまで転送が停止します(これはテストの理由だけであり、後で両方が別のサーバーで実行されます)。
プラットフォームはWindowsXPです。
これは何が起こっているのですか?