繁体   English   中英

如何接受 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 作为 boost::asio::ip::tcp::socket 类型的参数

[英]How to accept boost::asio::ssl::stream<boost::asio::ip::tcp::socket> as an argument of type boost::asio::ip::tcp::socket

我试图适应在加速文档的SSL服务器的例子在这里,但我想提出一个应用程序,你可以使用正常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 流使用的原始套接字?

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

例如,这个 asio HTTP 库使用“无处不在的模板”并使用以下代码连接 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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM