![](/img/trans.png)
[英]How to accept boost::asio::ssl::stream<boost::asio::ip::tcp::socket> as an argument of type boost::asio::ip::tcp::socket
[英]What does boost::asio::ssl::stream<boost::asio::ip::tcp::socket>::shutdown() do?
大量文檔有幫助地指出:
此功能用於關閉流上的SSL。 該函數調用將一直阻塞,直到SSL被關閉或發生錯誤為止。
這給我帶來了以下問題:
boost::asio::connect(theSocket.lowest_layer(), ...
重用流嗎? 在SSL_Shutdown()
,asio調用底層OpenSSL庫中的SSL_Shutdown()
:
此處的文檔:
https://www.openssl.org/docs/manmaster/ssl/SSL_shutdown.html
...,並包含以下不祥文字:
SSL_shutdown()的行為還取決於基礎BIO。
但是,據我了解, ssl::stream
對象不是套接字(按設計),而更像是位於類似Stream
的對象之上的協議層。 因此, asio::ssl
層除了必須支持自由函數read
, write
, async_read
和async_write
以外, next_layer()
。 當然,不知道該層是否支持shutdown()
(甚至close()
)的概念。
因此,我希望在shutdown()
返回時,由lowest_layer()
給定的基礎套接字仍然處於打開shutdown()
。 此外,我預計shutdown()
不會一直呼吁lowest_layer()
您需要在ssl::shutdown
返回之后,或在傳遞給ssl::async_shutdown
的處理程序中執行此ssl::async_shutdown
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.