所以我们做这样的事情就是这样的socket.read_some(boost::asio::buffer(buffer, buffer_size));
但是如何让它在一段时间内没有开始读取的情况下抛出一个豁免长于333秒呢?Boost :: asio socket - 如何使read_some在“timeout”中抛出?
4
A
回答
3
您应该考虑使用async_read_some
而不是read_some
,因为它允许您在读取的同时启动新的后台计时器。然后,为每个新插槽创建一个新计时器:
boost::asio::io_service io_service;
time_t_timer timer(io_service);
timer.expires_from_now(333);
std::cout << "Starting asynchronous wait\n";
timer.async_wait(&handle_timeout);
io_service.run();
您将在后台等待两个异步呼叫。
无论何时您在定时器上收到一些数据,您都可以使用cancel和expires_from_now
来重置倒计时,并且当定时器到期时,您可以关闭套接字或执行其他操作。
相关问题
- 1. 如何使用boost :: asio :: read_some实现超时?
- 2. 使用boost :: asio :: read_some在TCP/IP中丢弃数据?
- 3. Boost ASIO socket io_service.run blocking
- 4. boost :: asio convert socket to secure
- 5. boost :: asio和socket拥有
- 6. 如何使用boost :: asio从网络中断中恢复如何使用boost :: asio
- 7. 使用boost :: asio监听两个socket
- 8. 使用boost :: asio :: ip :: tcp :: socket作为shared_ptr
- 9. 从不同线程写入boost :: asio socket
- 10. unget bytes to boost :: asio :: ip :: tcp :: socket
- 11. Boost :: Asio读/写操作
- 12. C++ boost asio tcp socket读取旧数据
- 13. 回调传递给boost :: asio :: async_read_some在boost :: asio :: read_some返回数据时从未调用
- 14. boost :: asio :: async_read和boost :: asio :: streambuf
- 15. 如何使用Boost :: asio :: buffer(buf,size)和boost绑定?
- 16. 使用shared_ptr boost tcp socket C++
- 17. 如何获得boost :: asio :: ip :: tcp :: socket的IP地址?
- 18. 如何使用boost asio连接到elasticsearch?
- 19. 的boost :: ASIO检查
- 20. Boost Asio message_flags
- 21. 何时调用boost :: asio :: streambuf :: consume()和boost :: asio :: streambuf :: commit()?
- 22. boost asio deadline_timer
- 23. IO :: Socket :: Timeout中的write_timeout
- 24. Boost :: asio阻止Tcp服务器混淆
- 25. boost :: asio :: async_read_until问题
- 26. Boost asio and winhttp
- 27. boost :: asio UDP广播
- 28. Boost asio udp waitForReadyRead
- 29. 掌握的boost :: ASIO
- 30. 什么时候boost :: asio :: ip :: address :: from_string(remoteHost)抛出异常
666 - 野兽的数量。 668,他的邻居。 –