gpt4 book ai didi

c++ - 如何接受 boost::asio::ssl::stream 作为 boost::asio::ip::tcp::socket 类型的参数

转载 作者:可可西里 更新时间:2023-11-01 02:50:25 30 4
gpt4 key购买 nike

我试图调整 Boost 文档中的 SSL 服务器示例 here但我想制作一个应用程序,您可以在其中使用普通 boost::asio::ip::tcp::socket或 SSL 套接字,但我还没有找到将两者传递给 void do_something_with_socket(boost::asio::ip::tcp::socket& sock) 之类的函数的好方法因为 SSL 套接字不是从原始 TCP 套接字继承的。我唯一能想到的就是到处使用模板,但我想知道是否有更好的方法来做到这一点?谢谢。

编辑:我查看了 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 的成员我找到了next_layer()boost::asio::ip::tcp::socket但我试过了,它没有加密数据,因为我猜这是 SSL 流使用的原始套接字?

最佳答案

尝试使用 lowest_layer()而不是下一层。

例如这个asio HTTP library使用“无处不在的模板”并使用以下代码连接 SSL 套接字:

void connect_socket(ConnectHandler connect_handler,
ASIO::ip::tcp::resolver::iterator host_iterator)
{ ASIO::async_connect(socket_.lowest_layer(), host_iterator, connect_handler); }

在哪里socket_boost::asio::ssl::stream<boost::asio::ip::tcp::socket> .

关于c++ - 如何接受 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 作为 boost::asio::ip::tcp::socket 类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47999884/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com