我正在實作一個嘗試從服務器讀取資訊的 HTTPS 客戶端。在其作業期間,可以請求關閉。可以用以下代碼表示:
http::async_read( stream_, buffer_, res_,
beast::bind_front_handler(
&session::on_read,
shared_from_this()));
beast::get_lowest_layer( stream_ ).cancel();
一旦讀取被取消(on_read
被稱為操作取消錯誤)我打電話
stream_.async_shutdown([t = shared_from_this()] ( beast::error_code ec ) {
t->on_shutdown(ec);
});
關閉完成并出現以下錯誤:
application data after close notify
問題是忽略這個錯誤是否安全?
uj5u.com熱心網友回復:
您可以忽略此錯誤。如果服務器同時發送資料 - 在收到關閉通知之前開始異步發送應用程式資料塊,則會發生這種情況。
stream_.async_shutdown([t = shared_from_this()] ( beast::error_code ec ) {
if (ec ...) // add proper condition here
ec = beast::error_code(success);
t->on_shutdown(ec);
});
我還會在會話中添加一些標志并在取消之前設定它,所以session::on_read
并不意外,可以在關機后忽略。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496781.html
上一篇:c 向量指標參考問題