关于为什么 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));
被执行(很久以后)。
谢谢
更新: 我做了更多的调试,问题实际上不是 flush 命令。如果我让我的代码连接到 netcat 服务器,一切正常。我假设问题是客户端和服务器都在同一个进程中(我创建了两种威胁,一种作为服务器,一种作为客户端)。当我将它们放在不同的进程中时,一切正常,但当两者都在同一个进程中时,传输会停止,直到调用 sleep ...(这仅出于测试原因,稍后两者将在不同的服务器上运行)。
平台是WindowsXP。
知道为什么会这样吗?
最佳答案
你怎么知道冲洗不起作用? 我怀疑您的 while(true) 会给您的系统带来很高的负载。 这可以防止收件人运行。
在另一台主机上尝试使用相同的代码与收件人进行检查。
更新: 我认为问题是空的 while(true); 我会使用类似的东西:
while(true) {
sleep(1);
}
或 nanosleep 都在头文件 ctime 中定义。 最后是的,我相信同时运行服务器和客户端 这个过程会给你带来更多麻烦。
/托比亚斯
关于c++ - Boost.Asio iostream 冲洗不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341451/