gpt4 book ai didi

c++ - Boost.Asio iostream 冲洗不工作?

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:30 25 4
gpt4 key购买 nike

关于为什么 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com