1

任何想法为什么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。

任何想法为什么会发生这种情况?

4

1 回答 1

0

你怎么知道冲洗不起作用?我怀疑您的 while(true) 会给您的系统带来非常高的负载。这可以防止收件人运行。

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

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

while(true) {
    sleep(1);
}

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

/托拜厄斯

于 2009-08-27T14:51:47.183 回答