我可以重复使用 boost::ssl::stream 吗?

Tim*_*mmm 5 c++ ssl boost boost-asio

假设我使用boost::asio::ssl::stream<boost::asio::ip::tcp::socket>

asio::ssl::stream<asio::ip::tcp::socket> s;
asio::connect(s.lowest_layer(), endpointIterator);
s.handshake(asio::ssl::stream_base::client);
Run Code Online (Sandbox Code Playgroud)

等等。然后由于某种原因连接失败,甚至断开连接。是否可以在将来的连接中重用它,或者我是否必须为每个连接创建一个新对象?即包装流,如下所示:

class BetterSslConnection
{
public:
    BetterSslConnection() : mSocket(new asio::ssl::stream<asio::ip::tcp::socket>()) 
    {
    }

    ~BetterSslConnection()
    {
        if (mSocket)
        {
            mSocket->shutdown();
            mSocket->lowest_layer().close();
        }
    }

    void connect(... endpointIterator)
    {
        if (mSocket)
        {
            mSocket->shutdown();
            mSocket->lowest_layer().close();
        }
        mSocket.reset(new asio::ssl::stream<asio::ip::tcp::socket>());

        asio::connect(mSocket->lowest_layer(), endpointIterator);
        mSocket->handshake(asio::ssl::stream_base::client);
        // and so on.
    }

private:
    unique_ptr<asio::ssl::stream<asio::ip::tcp::socket>> mSocket;

};
Run Code Online (Sandbox Code Playgroud)

类 BetterSslConnection {