簡體   English   中英

什么會提升::: asio :: ssl :: stream <boost::asio::ip::tcp::socket> :: shutdown()嗎?

[英]What does boost::asio::ssl::stream<boost::asio::ip::tcp::socket>::shutdown() do?

大量文檔有幫助地指出:

此功能用於關閉流上的SSL。 該函數調用將一直阻塞,直到SSL被關閉或發生錯誤為止。

這給我帶來了以下問題:

  1. 這也會關閉實際的連接嗎?
  2. 如果沒有,我該怎么辦?
  3. 我可以通過再次調用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層除了必須支持自由函數readwriteasync_readasync_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM