来自Boost Asio SSL Stream

时间:2015-09-15 04:29:01

标签: c++ ssl boost boost-asio

文档似乎并不多说:lowest_layer()next_layer()

它们之间的区别是什么?何时使用它们?

1 个答案:

答案 0 :(得分:4)

要回答这个问题,首先要记住的是boost::asio::ssl::stream是一个模板类。通常它看起来像boost::asio::ssl::stream<boost::asio::ip::tcp::socket>。因此使用boost::asio::ip::tcp::socket实现。这将是boost::asio::ssl::stream next_layer 。另一方面, lowest_layer 始终为basic_socket(在docs中描述)。

特别是当您在标题tcp::socket中看到时,它的含糊不清是basic_stream_socket<Tcp>的typedef,它直接继承自basic_socket。并且..在OOP术语中你可以说&#34; next_layer是最低层&#34; ..

但是让我们再举一个你创建ssl::stream< MyOwnClass >的案例。在这种情况下, next_layer MyOwnClass,它应该控制数据读/写。 lowest_layer 将是{type}}在其typedef中所说的内容。

UPD:何时使用每个。使用 next_layer 进行读/写(您不需要这个用于SSL连接,但在启动会话之前需要它)。并使用 lowest_layer 来控制底层套接字。