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)" に達している可能性があります。
私が間違っていることの手掛かりはありますか?あなたのケースでは
readBytes = -1のとき、あなたのerror_code変数には何が入っていますか? –
@TonyTheLion行「(1)」に達した場合、「ec変数」はゼロに等しいと仮定します。 – Charstar
read_someは0(エラー時)を返します(http://www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/reference/ssl__stream/read_some/overload2.html)。問題を示す[短く、自己完結型の、正しい例](http://sscce.org/)を投稿できますか? –