Я пытаюсь получить данные из серверного приложения с помощью бесплатной функции async_read()
boost asio, но обратный вызов, который я установил для получения, никогда не вызывается.
Код клиента выглядит так:
Client::Client()
{
m_oIoService.run(); // member boost::asio::io_service
m_pSocket = new boost::asio::ip::tcp::socket(m_oIoService);
// Connection to the server
[...]
// First read
boost::asio::async_read(*m_pSocket,
boost::asio::buffer((void*)&m_oData, sizeof(m_oData)),
boost::bind(&Client::handleReceivedData, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
Я попытался с небольшими данными (короткая строка), и я не могу заставить его работать. Когда я использую функцию синхронного чтения (boost::asio::read()
), используя два одинаковых первых параметра, все работает отлично.
Я что-то упустил при использовании io_service? Я до сих пор не уверен, как это работает.