У меня есть проблема с boost :: asio :: async_read
Вот мой код
void TCPConnection::listenForRead() {
boost::asio::async_read(m_socket,
boost::asio::buffer(m_inbound_data),
boost::asio::transfer_at_least(64),
boost::bind(&TCPConnection::handle_read,
shared_from_this(),
boost::asio::placeholders::error)
);
}
А вот обработчик:
void TCPConnection::handle_read(const boost::system::error_code& error) {
if (error) {
std::cout << "Error read: " << error.category().name() << " -- " << error.value() << std::endl;
} else {
std::string archive_data(&m_inbound_data[0], m_inbound_data.size());
std::cout << "Message received: " << archive_data << std::endl;
listenForRead();
}
}
С
std::vector<char> m_inbound_data;
Я получаю бесконечный цикл на консоли, когда клиент подключается:
«Сообщение получено:» // Нет следов сообщения
Если я распечатаю длину данных,это всегда в 0.
Я соединяюсь с: telnet localhost 4242
Кто-нибудь знает почему?Разве это не должно ждать по крайней мере 64 символа?