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

标签 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。

知道为什么会这样吗?

最佳答案

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

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

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

while(true) {
    sleep(1);
}

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

/托比亚斯

关于c++ - Boost.Asio iostream 冲洗不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1341451/

相关文章:

c++ - 为什么 boost::asio::ip::tcp::basic_stream_socket::available 运行时间长?

boost - 如何从 boost::asio::streambuf 获取二进制数据

c++ - QT中的非初始化指针

c++ - 跨成员共享对象

c++ - boost::filesystem::path 中的 "/"字符有什么用?

c++11 - 从多个线程调用 boost::asio::io_service run 函数

c++ - 我可以依赖一个新的 bool 被初始化为 false 吗?

c++ - 缩短 boost::function

c++ - boost::bind()-类似的东西,但用于函数调用

google-app-engine - GAE 搜索 API 排序