文档似乎并不多说:lowest_layer(),next_layer()。
它们之间的区别是什么?何时使用它们?
答案 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 来控制底层套接字。