boost::asio 将套接字转换为安全套接字

2024-04-18

我正在用 C++ 为 Minecraft 游戏编写一个服务器。

客户端通过普通套接字向服务器发送初始握手数据包。然后,服务器将 RSA 密钥发送回游戏,并且从该点开始的所有套接字通信都将使用发送到客户端的 RSA 密钥进行 AES 加密。

我有一个想法,在服务器将 RSA 密钥发送到客户端后,只需将常规 boost::asio 套接字直接转换为 boost::asio ssl 套接字,就可以避免实现 AES/RSA 并链接到服务器中的其他库。

如果已经创建了套接字,如何转换它?


ssl::stream是在一个之上实现的tcp::socket,您可以直接通过next_layer or lowest_layer成员函数。事实上,要使用ssl::stream,您首先连接下划线套接字,然后调用ssl::stream::handshake。请注意,您可以在这两个步骤之间执行任何您想要的操作,例如从中读取和写入tcp::socket直接地。看这个例子 http://www.boost.org/doc/libs/release/doc/html/boost_asio/example/ssl/client.cpp了解详情。

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

boost::asio 将套接字转换为安全套接字 的相关文章

  • C++ 模板中的名称查找

    我有一些 C 代码 如果没有 fpermissive 选项 就无法再编译 这是我无法分享的专有代码 但我认为我已经能够提取一个简单的测试用例来演示该问题 这是 g 的输出 template eg cpp In instantiation o
  • OpenCV Visual Studio ntdll.dll

    我尝试在 Visual Studio 2013 上使用 OpenCV 2 4 10 创建一个项目 但由于以下异常 到目前为止我运气不佳 请建议帮助 TIA letstryitonemoretime exe Win32 Loaded C Us
  • 泛型与接口的实际优势

    在这种情况下 使用泛型与接口的实际优势是什么 void MyMethod IFoo f void MyMethod
  • 我们如何将数据从一个打开的表单传递到另一个打开的表单?

    winform中如何将数据从一个窗体传递到另一个打开的窗体 在 Windows 应用程序中 一个窗体打开另一个窗体 当我在父表单中输入一些数据时 这些数据将立即反映在另一个子表单中 这将如何发生 取决于你想要多花哨 最简单的方法就是直接调用
  • 如何“杀死”Pthread?

    我正在学习 Pthreads 并且想知道杀死这样一个对象的最佳方法是什么 在寻找类似的问题后 我无法找到 明确 的答案 但请随时向我指出任何相关问题 我正在使用一个小型客户端服务器应用程序 其中服务器主线程正在侦听套接字上的客户端连接 每次
  • 将列表(对象)转换为列表(字符串)

    有没有办法转换List of Object to a List of String 在 c 或 vb net 中而不迭代所有项目 幕后迭代很好 我只想要简洁的代码 Update 最好的方法可能就是进行新的选择 myList Select f
  • 返回指向 std::vector 中的对象的 a

    我有一个关于返回对向量元素的引用的非常基本的问题 有一个向量vec存储类的实例Foo 我想访问这个向量中的一个元素 不想使用向量索引 我应该如何编码该方法getFoo here include
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • Azure 2012 年 10 月 SDK 损坏 UseDevelopmentStorage=true

    有人尝试过使用 usedevelopmentstorage true 连接字符串的 2012 年 10 月 Azure sdk 吗 CloudStorageAccount Parse UseDevelopmentStorage true 抛
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 控制器中的异常处理 (ASP.NET MVC)

    当您自己的代码抛出异常并从控制器中的操作调用时 应该如何处理 我看到很多最佳实践的例子 其中根本没有 try catch 语句 例如 从存储库访问数据 public ViewResult Index IList
  • 以标准用户身份打开默认浏览器 (C++)

    我目前正在使用 ShellExecute 打开 在用户浏览器中打开 URL 但在 Win7 和 Vista 中遇到了一些麻烦 因为该程序作为服务运行提升 当 ShellExecute 打开浏览器时 它似乎读取 本地管理员 配置文件而不是用户
  • 使用互斥锁来阻止临界区外部的执行

    我不确定我的术语是否正确 但这里是 我有一个由多个线程使用的函数来写入数据 在注释中使用伪代码来说明我想要的内容 these are initiated in the constructor int data std atomic
  • 如何使用 libpq 获取双精度值?

    The examples http www postgresql org docs 9 3 interactive libpq example htmllibpq 文档中展示了如何通过将整数值转换为主机字节序表示来获取整数值 我很好奇必须做
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • 我应该使用多个 HttpClient 来进行批量异步 GET 请求吗?

    我有一个场景 我需要在尽可能短的时间内发出大量 GET 请求 想想大约 1000 个 我知道通常最好保留一个客户端并尽可能重用它 Create Single HTTP Client HttpClient client new HttpCli
  • C 中什么函数可以替换字符串中的子字符串?

    给定一个 char 字符串 我想查找所有出现的子字符串并将其替换为备用字符串 我没有看到任何简单的函数可以实现这一点
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call
  • 使用 roslyn 扩展 C# 语法

    我试图在没有 else 情况的情况下实现 return if return value if 因为我只想在条件有效时返回或返回一个值 我知道 有if condition return or if condition return value
  • 如何将 Metro 应用部署到桌面?

    我正在尝试将我的 C 应用程序部署到我的 Windows 8 Metro 桌面 我可以在 bin 文件夹中看到部署的文件 但是当我尝试打开它们时 出现以下错误 该应用程序只能在 AppContainer 的上下文中运行 我检查了属性上下文菜

随机推荐

  • 当列数动态时,如何从数据框中过滤数据?

    我有一个如下所示的数据框 A Name B Detail Value B Value C Value D 0 AA X1 1 2 0 5 1 3 1 BB Y1 0 76 0 7 0 8 2 CC Z1 0 7 1 3 2 5 3 DD L
  • 从圆/点获取投资回报率

    我在图像中有两个点 左眼中心 X Y 和右眼中心 X Y 我用双眼在双眼周围画了圈cv circle 这很好 但我现在想做的是获取我绘制的圆圈的投资回报率 即提取眼睛并将它们保存在新的 Mat 中 这是我目前的结果 但正如我上面所说 只需要
  • 从页面内重新加载 .NET MAUI 中的瞬态页面

    我有一个 NET MAUI 应用程序 其中一个页面在 MauiProgram cs 中注册为瞬态 我希望能够使用页面本身上的按钮重置页面 但不知道如何操作 请有人帮助我 我已经尝试过使用这段代码 但它没有做任何事情 RelayCommand
  • 使用 Apache 将端点转发到同一主机上的不同端口

    我正在尝试将 Apache 配置为以不同的方式处理应用程序的某些端点 我需要 api appname 和 admin 转发到同一主机上的单独 Tomcat 实例 显然在不同的端口上运行 Apache 正在侦听 443 SSL 浏览 Apac
  • 有没有办法退出 Greasemonkey 脚本?

    我知道你可以使用return 从 Greasemonkey 脚本返回 但前提是您不在另一个函数中 例如 这是行不通的 Begin greasemonkey script function a return Only returns from
  • docker 镜像中的 openVPN

    我正在尝试创建一个 docker 映像 其中包含一个 python 脚本 该脚本使用 openVPN 通过 VPN 连接到 API 但是 我似乎无法让 openVPN 正常工作 我有我的 docker 文件 Install openVPN
  • 修改函数内的点 (...)

    我正在尝试修改自定义函数内的点 这是我的一个简化示例plot2函数 它在屏幕上显示一个绘图type p 默认 并保存 svgtype l 当其中之一出现时 问题就出现了 绘图选项已在函数中 在这个例子中 type 由多个实际参数匹配 plo
  • 如何防止 IntelliJ IDEA 在启动时重新分配文件类型关联?

    我正在使用 IntelliJ IDEA Ultimate 18 1 而 Jenkinsfile 支持很糟糕 值得庆幸的是 将文件视为 Groovy 是我可以接受的解决方法 这涉及到 删除 Jenkinsfile 关联 在Groovy组下添加
  • flex:如何防止在flex3文本输入中粘贴(ctrl+V)?

    你好 我需要禁用在文本输入中粘贴文本 flex 3 CTRL V 任何想法 reagrds 这只会阻止粘贴多个字母 但它确实适用于大多数用途
  • CSS悬停菜单:获取悬停菜单项以保持悬停状态CSS

    在这种情况下 我如何设置在抛出菜单项时保持悬停状态 是否有仅 CSS 的方法或者我必须引入一些 javascript 谢谢 It is只需CSS即可实现 例如 如果您的菜单由嵌套列表组成 li hover background color
  • 本机 C++ 中的 CreatePushNotificationChannelForApplicationAsync

    我正在尝试在本机 C 代码中使用 Windows 推送通知 但我在实施方面遇到了困难 我正在打电话CreatePushNotificationChannelForApplicationAsync但它返回HRESULT FROM WIN32
  • 对于 JavaScript 多维数组的深层复制,深一层似乎就足够了。这是真的吗?

    注意 我只是一个新手编码员 所以这个问题的核心可能存在明显的错误或误解 本质上 我需要将 JavaScript 中的多维数组 按值 深度复制到未知的深度 我认为这需要一些复杂的递归 但它seems在 JavaScript 中 您只需复制一层
  • JSP、JavaScript:将字节[]显示为图像

    我使用以下代码片段从文件中选择和读取图像 div class col md 6 form group div
  • 模拟绘画应用的笔触

    我正在尝试编写一个应用程序 可用于使用模拟笔触创建看起来像绘画的图片 是否有任何好的资源可以提供模拟笔触的简单方法 例如 给定用户拖动鼠标经过的鼠标位置列表 画笔宽度和画笔纹理 如何确定要在画布上绘制的内容 我尝试将画笔纹理倾斜到鼠标移动的
  • Eclipse 无法识别 Android 上的“R.id...”

    有什么想法为什么 Eclipse 有时会失败并且无法识别几秒钟前执行的代码吗 下面代码中的 R 下面有红色波浪线 而 5 分钟前还没有 而且我没有更改任何代码 这种情况在 Eclipse 中经常发生 通常我将其关闭并重新启动 一切顺利 这次
  • 在 ansible 角色中引用 defaults/main.yml 中的变量

    我的角色设置如下 角色 测试 任务 main yml name Generate people files template src test j2 dest tmp item name cfg loop people 角色 测试 模板 t
  • 使用 Servlet 和 JSP 验证数字

    我在学习 Web 开发的同时正在开发一个小型 Servlet 和 JSP 应用程序 我有一个关于 jsp 和 servlet 之间的验证和传递值的问题 我有一个 啤酒 类 具有 评级 属性 双精度类型 加载 edit jsp 的 servl
  • Codeigniter - 返回视图作为数据不起作用[重复]

    这个问题在这里已经有答案了 我在 CodeIgniter 2 0 2 中将视图作为数据返回时遇到问题 我不确定此版本的 CI 中是否提供此功能 这可能是问题所在 但我希望不是这样 因为目前无法选择升级 我们运行两个两个网站 其中一个我们使用
  • 如何只选择表格中的几列

    我有一个包含大约 1000 列的表 当我使用 Select from Table 它返回表的整个记录 但我只想要有限的记录列 col1 col2 col3 col4 col 5 col1000
  • boost::asio 将套接字转换为安全套接字

    我正在用 C 为 Minecraft 游戏编写一个服务器 客户端通过普通套接字向服务器发送初始握手数据包 然后 服务器将 RSA 密钥发送回游戏 并且从该点开始的所有套接字通信都将使用发送到客户端的 RSA 密钥进行 AES 加密 我有一个