首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当遇到经验问题时,我需要在beast::ssl_stream<beast::tcp_stream>上打电话给beast::ssl_stream<beast::tcp_stream>吗?

当遇到经验问题时,我需要在beast::ssl_stream<beast::tcp_stream>上打电话给beast::ssl_stream<beast::tcp_stream>吗?
EN

Stack Overflow用户
提问于 2022-05-27 20:40:44
回答 1查看 104关注 0票数 1
代码语言:javascript
复制
https://www.boost.org/doc/libs/1_72_0/libs/beast/example/http/client/async-ssl/http_client_async_ssl.cpp

std::unique_ptr<tcp::resolver> resolver_{nullptr};
std::unique_ptr<beast::ssl_stream<beast::tcp_stream>> stream_{nullptr};

void address_failure()
{
  // without calling stream_.async_shutdown
  //
  resolver_ = std::make_unique<tcp::resolver>(strand);
  stream_ = std::make_unique<websocket::stream<beast::ssl_stream<beast::tcp_stream>>>(strand, ctx);
  ...
}

void on_handshake(beast::error_code ec)
{
  if(ec)
  {
    address_failure();
    return;
  }
  ...
}

问题>当我看到连接问题时,我可以直接从头开始而不调用stream_.async_shutdown吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-27 21:46:41

你可以从头开始,但是如果可能的话,尝试做一个优雅的关闭是很好的做法。

注意,相反,有些服务器可能会放弃干净的关机。这通常导致短读(stream_truncated),或者,在某些情况下,套接字处于挥之不去的状态。这是一些服务器确实可以解决的问题,但如果这样做,则可能会导致另一端的资源耗尽。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72410860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档