在 Asio 中异步等待,直到套接字可用于读/写

2023-11-21

我想用 Boost Asio 执行以下操作。我有一个套接字,我想注册一个回调,当数据可用于在套接字上读取/写入时调用,但我不希望它实际执行读取/写入操作。基本上,我需要的类似于async_read_some/async_write_some,除了实际的读写没有完成。

我需要这个,因为我正在使用一个具有自己的读写函数的外部库,该函数需要套接字描述符作为输入参数,并且我想以异步方式使用这个库。


您正在寻找反应堆式操作。这些可以通过提供来获得boost::asio::null_buffers到异步操作。反应堆式操作对于与第三方库集成、使用共享内存池等非常有用。Boost.Asio文档提供了一些信息和以下示例代码:

ip::tcp::socket socket(my_io_service);
...
socket.non_blocking(true);
...
socket.async_read_some(null_buffers(), read_handler);
...
void read_handler(boost::system::error_code ec)
{
  if (!ec)
  {
    std::vector<char> buf(socket.available());
    socket.read_some(buffer(buf));
  }
}

Boost.Asio官方还提供了非阻塞示例,说明如何与想要直接在套接字上执行读写操作的库集成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Asio 中异步等待,直到套接字可用于读/写 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当

随机推荐

  • 如何以文化感知方式格式化 TimeSpan 的 HH:mm:ss 分隔符?

    我正在开发一款可以在世界许多国家 地区看到的应用程序 没有多少国家 地区会使用 以外的其他内容作为分隔符来显示小时 分钟和秒 但有一些国家 地区 我想确保其所在地区的时间格式正确 DateTime 在这方面很擅长 但 TimeSpan 则不
  • 无需拖放即可快速创建用户界面的最佳语言? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我是一名盲人大学生 正在参加专注于用户界面设计的编程入门课程 该类正在使用Processing 这是完全无法访问的 我正在寻找一种语言 它允许我无需拖放即可创建 GUI 并希望足够智能来完
  • GWT 将 ClickHandler 添加到 DOM 元素

    可以说我有一个带有 ClickHandler 的自定义小部件 这是例子 public class TestWidget extends Composite private static TestWidgetUiBinder uiBinder
  • jinja2.exceptions.TemplateNotFound:bootstrap/base.html

    我在继承引导程序 base html在安装 Bootstrap Flask 扩展后的 Flask 应用程序中 但出现以下错误 jinja2 exceptions TemplateNotFound bootstrap base html 您需
  • MP4 正在下载而不是播放

    MP4 文件有时会被下载 有时会在浏览器中播放 这两个链接有什么区别 1 如果您在 Chrome 中打开此 URL 将下载视频 http video video mall com video mall 400241188377 video
  • Angular 2 获取div的宽度

    我看过很多帖子 但没有一个完全符合我的要求 我有一个超出页面宽度的表格 由于各种原因我需要获取它的宽度 I used ViewChild tableToMeasure elementView ElementRef 然后将 tableToMe
  • 如何化简分数?

    如何在 C 中化简分数 例如 给定1 11 6 我需要它简化为2 5 6 如果你想要的只是将你的分数变成一个带分数 其小数部分是像前面假设的答案一样的真分数 你只需要添加numerator denominator到数字的整个部分并将分子设置
  • 如何使用 python nltk 加速 stanford NER 的 NE 识别

    首先 我将文件内容标记为句子 然后对每个句子调用斯坦福 NER 但这个过程确实很慢 我知道如果我在整个文件内容上调用它会更快 但是我在每个句子上调用它 因为我想在 NE 识别之前和之后索引每个句子 st NERTagger stanford
  • 我可以更改 UISearchBar 清除按钮的颜色/图像吗?

    我想将清除按钮颜色更改为白色 我尝试了很多方法但没有运气 我还参考了以下内容link 但这对我不起作用 请找到我尝试过的以下代码 我正在开发最新的 ios 11 感谢任何帮助 class SearchBar UISearchBar over
  • 如何解析气流模板中的json字符串

    是否可以在气流模板中解析 JSON 字符串 我有一个 HttpSensor 它通过 REST API 监视作业 但作业 ID 位于上游任务的响应中 该任务具有xcom push marked True 我想做类似下面的事情 但是 这段代码给
  • 有时 console.log 在 log-ios 中显示,有时则不显示

    我跑了react native start在一个终端中 然后react native ios run在另一个 我的初始console log很少表现出来 但有时会表现出来 很多时候 我随机地看到 超出日志消息配额 此进程中的一些消息已被丢弃
  • 如何从监控摄像头录制的视频中读取时间?

    我有一个问题 我必须从监控摄像头录制的视频中读取录制时间 时间显示在视频的左上角区域 下面是显示时间的区域屏幕截图的链接 此外 数字颜色 白色 黑色 在视频播放期间不断变化 http i55 tinypic com 2j5gca8 png
  • 更新 .dbml 文件

    在数据库中进行一些更改后如何更新 dbml 文件 进行更改后没有内置方法可以将 dbml 文件 数据上下文与数据库同步 除了通过删除所有或部分实体并重新拖动它们来重新生成整个 dbml 文件之外 或者按照其他回复的建议使用 sqlmetal
  • Python - 找到最近的时间戳

    我有一个 Python 日期时间时间戳和一个大字典 索引 其中键是时间戳 值是我感兴趣的其他一些信息 我需要尽可能高效地找到索引中最接近时间戳的日期时间 键 目前我正在做类似的事情 for timestamp in timestamps c
  • .net MAUI 背景 vs 背景颜色 - 有什么区别?

    使用 Visual Studio Community Edition 2022 构建 Net MAUI 项目 我尝试搜索官方文档 但没有找到答案 有人可以解释以下内容吗 问题 有什么区别Background and BackgroundCo
  • SQL表连接中ON和WHERE子句的区别

    select e last name e hire date from employees e join employees m on m last name Davies and e hire date gt m hire date se
  • ActionFilterAttribute ninject 注入 - DbContext 已被处置

    我的项目使用通常的存储库模式以及服务和工作单元 所有这些都使用 Ninject 从 NinjectModule 注入依赖项 但我正在尝试从ActionFilterAttribute在我显示的页面布局中注入一些信息 来自数据库 这样我就不需要
  • 使用 JavascriptExecutor 的 Selenium Datepicker

    请告知是否接受使用 Selenium 的取货日期这种方法 WebDriver driver new ChromeDriver driver manage window maximize driver get https www spicej
  • 熊猫的重采样从几个月到几周

    我正在尝试将每月数据下采样为每周数据 并拥有如下所示的月份时间序列数据框 qty PERIOD NAME 2017 09 01 49842 0 2017 10 01 27275 0 2017 11 01 29159 0 2017 12 01
  • 在 Asio 中异步等待,直到套接字可用于读/写

    我想用 Boost Asio 执行以下操作 我有一个套接字 我想注册一个回调 当数据可用于在套接字上读取 写入时调用 但我不希望它实际执行读取 写入操作 基本上 我需要的类似于async read some async write some