Я внедряю сервер, который отправляет xml клиентам, используя boost. Проблема, с которой я сталкиваюсь, заключается в том, что буфер отправляется не сразу, а накапливается до некоторой точки, а затем отправляет все целиком. Это вызывает проблему на моей стороне клиента, когда он анализирует xml, у него может быть неполный тег xml (неполное сообщение). Есть ли способ в boost, чтобы очистить сокет всякий раз, когда ему нужно отправить сообщение? Ниже приведен код записи сервера.
void
ClientConnection::handle_write(const boost::system::error_code& error)
{
if (!error)
{
m_push_message_queue.pop_front ();
if (!m_push_message_queue.empty () && !m_disconnected)
{
boost::asio::async_write(m_socket,
boost::asio::buffer(m_push_message_queue.front().data(),
m_push_message_queue.front().length()),
boost::bind(&ClientConnection::handle_write, this,
boost::asio::placeholders::error));
}
}
else
{
std::err << "Error writting out message...\n";
m_disconnected = true;
m_server->DisconnectedClient (this);
}
}