簡體   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