boost asio取消读取而不取消写入
boost asio cancelling read without cancelling write
我有一个套接字,它既等待数据,也尝试发送一些数据(async_read/async_write),在某个时候我想取消只读,可能在稍后阶段重新初始化它。
有可能吗?
在实践中,这并不像人们想象的那样是一个限制:如果您允许在任何时候取消异步操作,那么就很难推断连接的状态。在您的示例中,即使取消了不需要的读取,它应该检索的数据仍然必须从套接字中删除,这样后续的读取就可以从干净的状态开始。在这种控制水平下很难确保这一点。
相反,考虑完成异步读取操作,并使用程序逻辑来确定如何处理读取数据:如果操作被标记为已取消,您可能只想丢弃数据。
也许您需要关闭您的套接字?
socket.shutdown(boost::asio::ip::tcp::socket::shutdown_receive);
调用shutdown
后,套接字将无法接收新数据。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 挂起和取消挂起一个文件DLL
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 如何取消对nullptr的屏蔽,返回正确的对象
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- C++取消引用指针.为什么会发生变化
- 为什么在读取文件大小时文件IO速度会发生变化
- 正在读取二进制文件(is_open)
- 如何在等待时取消"提升::ASIO::读取"操作
- 使用引用和取消引用运算符读取代码行时遇到问题
- boost asio取消读取而不取消写入
- 在c++中取消对文件的读取