加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 提升asio&ssl和错误代码

发布时间:2020-12-16 07:28:32 所属栏目:百科 来源:网络整理
导读:考虑这段代码: const std::size_t rawBufferSize = 1024;char rawBuffer[rawBufferSize] = { 0 };boost::asio::ssl::stream boost::asio::ip::tcp::socket * sslStream;... // initializing stuffboost::system::error_code ec;auto buffer = boost::asio::
考虑这段代码:

const std::size_t rawBufferSize = 1024;
char rawBuffer[rawBufferSize] = { 0 };
boost::asio::ssl::stream< boost::asio::ip::tcp::socket >* sslStream;

... // initializing stuff

boost::system::error_code ec;
auto buffer = boost::asio::buffer(rawBuffer,rawBufferSize);

for(; ; )
{
   int readBytes = sslStream->read_some(buffer,ec); // I know that read_some return std::size_t (unsigned int)...

   // here,readBytes equals -1

   if (ec)
       break;

   ... (1)
}

“readBytes”如何等于-1并且达到“(1)”行怎么可能.

我有什么不对的任何线索?

解决方法

在您的情况下,您的error_code变量不是指针,因此以下if语句

if (ec)
   break;

如果error_code确实存在,则不会正确检查.

您需要这样做以检查error_code是否存在:

if (ec.value() != 0) break;

现在,当发生错误时,它将正确中断.

在枚举内,error_code的值可以是these错误条件中的任何一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读