最初我得到错误";提供的文件句柄是无效的"。这是因为我的插座关闭了。我改正了那个错误。
现在我得到另一个错误"句柄是无效的"....你知道有什么问题吗
下面是我的代码,非常简单:void BeastResponse::write(http::response<http::file_body> responseFile)
{
std::cout << "BeastResponse while file write: " << this << std::endl;
auto self = shared_from_this();
http::async_write(m_stream, responseFile, [self](beast::error_code ec, std::size_t t)
{
if (ec)
{
std::cout << "File Write Failed" << ": " << ec.message() << std::endl;
std::cout << t << std::endl;
}
else
{
std::cout << t << std::endl;
};
});
}
这里,当我得到错误时,t = 4kb。所以我认为async_write后,它做的第一个块4kb,我的处理程序或套接字是一个坏的状态。
如果更改为http:write而不是http:async_write,则没有问题
下面的代码为我工作…
void BeastResponse::write(http::response<http::file_body>&& responseFile)
{
std::cout << "BeastResponse while file write: " << this << std::endl;
auto self = shared_from_this();
// copy file into the member variable, m_response_file
m_response_file = std::move(responseFile)
// 2nd parameter must be a member variable of BeastResponse
http::async_write(m_stream, m_response_file, [self](beast::error_code ec, std::size_t t)
{
if (ec)
{
std::cout << "File Write Failed" << ": " << ec.message() << std::endl;
std::cout << t << std::endl;
}
else
{
std::cout << t << std::endl;
};
});
}