Boost阻塞读超时
Boost blocking read timeout
我将按照下面的链接实现一个带超时的阻塞读取。
http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/example/timeouts/blocking_tcp_client.cpp很好。现在我想实现另一个不使用timeout的函数。所以我试着直接打电话:
socket_.async_receive(boost::asio::buffer(buf,size),
boost::bind(&TCPClient::HandleReceive, _1, _2, &ec, &length));
问题是函数没有阻塞,并立即返回长度为0的值。
我应该在async_receive之前调用哪个函数来无限期地阻塞?
对
前缀async
表示该函数异步运行。
直接调用socket::receive
。
如果您需要在调用返回之前读取固定数量的字节,您最好查看asio::read
,因为receive
操作可能不会接收到所有请求的字节数。
你可以直接调用io_service::run()
等待工作完成。
在使用该服务进行更多工作之前,请记住将其reset()
。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 使用boost::multiprecision cpp_int左移时出现超时错误
- boost :: Beast Sync http客户端的超时
- 在Boost async_receive_from上定义超时
- 如何通过超时检查Boost ASIO套接字中的数据
- BOOST ASIO :: DENALLINE_TIMER在超时之前重置
- 使用Boost DateTime在C 中进行超时
- Boost.Thread超时等待
- 使用Posix时间的Boost线程超时
- 设置boost socket.connect的超时时间
- 如何使用boost::asio::read_some实现超时
- boost::asio中异步操作超时的通用方法
- 使用boost::asio::async_read实现超时,而不调用io_service上的run
- Boost阻塞读超时
- 带线程超时的Boost ASIO线程池
- Boost ASIO套接字读取N字节不多不少,等待它们到来或超时异常
- Boost.Asio:异步操作超时
- Boost asio异步http客户端超时