boost::asio 和套接字所有权

2024-02-16

我有两个类(谈判者、客户端),都有自己的 boost::asio::ip::tcp::socket。有没有办法在协商完成后将套接字对象传输给客户端。我期待着做这样的事情:

 boost::asio::ip::tcp::socket sock1(io);
 //...
 boost::asio::ip::tcp::socket sock2;
 sock2.assign(sock1); 

这个操作必须保证当sock1被销毁时连接不会被关闭。


I think你可以:

  • 使用native()成员函数获取sock1的本机句柄
  • dup()(或 WSADuplicateSocket())sock1 的本机句柄
  • 使用 assing() 成员函数将 dup()-ed 句柄传递给 sock2

However:

  • 我不确定,因为我从未尝试过
  • 如果你想transfer(而不是共享)从谈判者到客户端的套接字,Dan 使用动态分配的建议可能更简单,使用 unique_ptr (或 auto_ptr)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boost::asio 和套接字所有权 的相关文章

  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • Excel VBA 自动筛选添加空行

    我修改了 Excel 宏 之前它是逐行进行的 现在它会批量过滤结果和复制 效率更高 我现在遇到的问题是 自动过滤器向工作表中添加了数百万个空行 但我无法确定为什么会这样做 CountryCodes 是一个字典 其中包含过滤器的值 Crite
  • iOS 多个 AVPlayer 对象导致音频/视频同步丢失

    我一直在尝试使用两种不同的AVQueuePlayer我的应用程序中的对象 第一个播放器播放一系列通过网络传输的短视频剪辑 第二个对象仅播放一个视频 但长度要长得多 它也是流式传输的 我已验证所有剪辑都具有正确的音频 视频同步 我注意到的是
  • 从缓存的选择器遍历 DOM 是否比在 DOM 中查找 ID 元素更快?

    关于通过 class 或 id 或其他选择器查找元素是否更快存在很多问题 我对此不感兴趣 我想知道你是否有 var link this let s say you re in a click handler 通过这样做找到容器是否更快 va
  • 等待元素中的文本发生更改

    请建议 Selenium 是否有一个好的选项可以等待元素内的文本发生更改 状况 页面不会自动重新加载 我需要的文本元素会动态重新加载 该数据更新所需时间未知 预期文本未知 它是一个时间戳 我编写了一个方法 每 1 秒 或我设置的任何时间 检
  • 当 localStorage 已满时会发生什么?

    我已经发现articles http code google com speed page speed docs caching html关于缓存行为 所以我只能假设它没有太大不同 但我想确定一下 我读到大多数浏览器都有 5MB 给予或接受
  • 我应该如何正确实现 Clojure 核心接口?

    如果我使用 Clojure 实现一些数据结构deftype 我应该如何决定哪一个Clojure 核心接口 https github com clojure clojure tree master src jvm clojure lang实施
  • 在 Android 上使用 LuaJ 从 Lua 脚本中请求其他 lua 脚本

    我在 Android 上通过 LuaJ 从 Java 调用需要其他 Lua 脚本的 Lua 脚本时遇到问题 我认为这与我当前的工作目录有关 我在 Java 中尝试的 InputStream input EvilApp getContext
  • Spring通过构造函数参数表达不满足的依赖关系,索引类型为0

    完整的消息是 Caused by org springframework beans factory UnsatisfiedDependencyException Error creating bean with name userRepo
  • Javascript 中日期范围内有多少个特定天

    我有两个约会 一个是开始日期 另一个是结束日期 我想计算有多少个星期六 星期一和星期三属于该日期范围 我该如何解决 我看过几个教程 但他们只计算日期范围内的日期 提前致谢 我使用以下代码仅计算工作日 但我只需要有多少个星期六 星期一和星期三
  • JBuilder 模板永远不会被调用

    在我的 Rails 4 应用程序中 我有一个API V1 ClustersController结构如下 class Api V1 ClustersController lt ApplicationController respond to
  • SELECT 语句的 SQL 别名

    我想做类似的事情 SELECT FROM AS my select WHERE id IN SELECT MAX id FROM my select GROUP BY name 是否可以以某种方式执行 AS my select 部分 即为
  • 核心 API 控制器捕获所有未知路线

    我有一个 Core 2 2 API 和一堆现有的控制器 我现在想做的是添加一个新的控制器 其行为类似于包罗万象的路线 但仅适用于该控制器 并且不干扰现有控制器的路线 在我现有的控制器中 我将路由定义为控制器属性 Route api cont
  • 使用 iText 签名时,Adobe Reader 报告“签名是使用“不可用”创建的。”

    我正在使用 iText 成功签署文档 但是 每当我在 Adob e Reader 中检查 高级签名属性 时 我都会看到 签名是使用 不可用 创建的 我的问题是 如何使用 iText 更新此信息 然后在 Adob e Reader 或任何其他
  • 用于自定义视图的 SwiftUI ViewModifier

    有没有办法创建一个修改器来更新 State private var在正在修改的视图中 我有一个自定义视图 它返回Text具有 动态 背景颜色或Circle具有 动态 前景色 struct ChildView View var theText
  • 使用 UIGestureRecognizer 旋转瓶子

    我现在使用此代码在按钮点击上旋转瓶子 IBAction func spinButton sender AnyObject let rotateView CABasicAnimation let randonAngle arc4random
  • Symfony 2 缓存清除问题

    最近 当我尝试清除缓存时 我的 Symfony 2 网站出现了问题 我在终端中输入以下命令 php app console cache clear env dev 并得到以下错误 ErrorException Warning rename
  • 功能未显示在统一按钮上

    我正在学习 Unity 和 C 我试图使用按钮来触发某些内容 但该功能未显示 这是代码 using System Collections using System Collections Generic using UnityEngine
  • C++ 的 64 位名称修改

    我有一些代码 其中包含以下行 pragma comment linker include test 12 当我使用 C Visual Studio 2010 和配置类型 32 位 我也在 32 位 Windows 机器上 编译代码时 使用此
  • 如何使用 WebMatrix 在 ASP.NET 网页中制作自定义错误页面?

    信不信由你 我试图通过简单的 Google 搜索来寻找这个问题的答案 但我没有找到任何东西 通过 Google 搜索 WebMatrix 自定义错误页面 WebMatrix 如何制作自定义服务器端错误页面 等 但也许我没有使用正确的术语进行
  • boost::asio 和套接字所有权

    我有两个类 谈判者 客户端 都有自己的 boost asio ip tcp socket 有没有办法在协商完成后将套接字对象传输给客户端 我期待着做这样的事情 boost asio ip tcp socket sock1 io boost