Здравствуйте, in trance, Вы писали:
IT>Здравствуйте, paxerus, Вы писали:
P>>пишу так возникает ошибка
P>>P>>std::string answer("ertertertertertert");
P>> ba::async_write(socket_,ba::buffer(answer),
P>> boost::bind(&connection::SendAnswer,
P>> shared_from_this()));
P>>
IT>Исходники не смотрел, но судя по всему answer долго не живет, т.е. вызывается деструктор раньше, чем asio отправляет данные. Сделай его как мембер класса.
так и думал что из за этого но такое простое решение как засунуть в класс не пришло в мою голову спасибо стало нормально ,еще один вопрос есть
не буду мучать скачанием исходника, поэтому кусочек кода выложу тут
void connection::ReciveHeader(const bs::error_code& err, size_t len)
{ if(!err)
{
answer="ertertertertertert";
ba::async_write(socket_,ba::buffer(answer),
boost::bind(&connection::SendAnswer,
shared_from_this()));
}
}
void connection::SendAnswer()
{ socket_.close();
shared_from_this().reset();
}
void connection::run()
{
try
{
async_read(socket_, ba::buffer(HeaderBuff), ba::transfer_at_least(1),
boost::bind(&connection::ReciveHeader,
shared_from_this(),
ba::placeholders::error,
ba::placeholders::bytes_transferred));
} catch(std::exception& x) {
// std::cerr << "Exception: " << x.what() << std::endl;
}
}
меня волнует нормально будет если я
socket_.close();
shared_from_this().reset();
расположу в функции SendAnswer ???