为什么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。
为什么会发生这种情况?
答案 0 :(得分:0)
你怎么知道同花顺不起作用? 我怀疑你的while(true)会给你的系统带来很高的负担。 这可能会阻止收件人运行。
在其他主机上尝试使用与收件人相同的代码进行检查。
更新: 我认为问题是空的(真实); 我会使用类似的东西:
while(true) {
sleep(1);
}
或nanosleep都在header ctime中定义。 最后是的,我相信运行服务器和客户端相同 过程会给你带来更多麻烦。
/托拜厄斯