小编DSB*_*DSB的帖子

在Boost.Asio中同时使用SSL套接字和非SSL套接字?

我正在将库转换为Boost.Asio(到目前为止工作得非常好),但我在设计决策方面遇到了一些绊脚石.

Boost.Asio提供对SSL的支持,但boost::asio::ssl::stream<boost::asio::ip::tcp::socket>必须为套接字使用类型.我的库可以选择连接到SSL服务器或正常连接,所以我创建了一个带有两个套接字的类,如下所示:

class client : public boost::enable_shared_from_this<client>
{
public:
    client(boost::asio::io_service & io_service, boost::asio::ssl::context & context) : socket_(io_service), secureSocket_(io_service, context) {}
private:
    boost::asio::ip::tcp::socket socket_;
    boost::asio::ssl::stream<boost::asio::ip::tcp::socket> secureSocket_;
};
Run Code Online (Sandbox Code Playgroud)

并且有一堆参考的处理程序socket_.(例如,我有socket_.is_open()几个地方,需要成为secureSocket_.lowest_layer().is_open()另一个插座.)

任何人都可以建议最好的方法来解决这个问题吗?我宁愿不为此目的创建一个单独的类,因为这意味着要复制很多代码.

编辑:我改写了我原来的问题,因为我误解了OpenSSL函数的用途.

c++ boost-asio

24
推荐指数
3
解决办法
9366
查看次数

标签 统计

boost-asio ×1

c++ ×1