Boost.Asio iostream刷不工作?

时间:2009-08-27 14:22:05

标签: c++ boost boost-asio

为什么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。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

你怎么知道同花顺不起作用? 我怀疑你的while(true)会给你的系统带来很高的负担。 这可能会阻止收件人运行。

在其他主机上尝试使用与收件人相同的代码进行检查。

更新: 我认为问题是空的(真实); 我会使用类似的东西:

while(true) {
    sleep(1);
}

或nanosleep都在header ctime中定义。 最后是的,我相信运行服务器和客户端相同 过程会给你带来更多麻烦。

/托拜厄斯