У меня есть сервер:
receive_socket->async_receive(boost::asio::buffer(receive_buffer[1], MAX_SIZE_PACKAGE),
boost::bind(&ClientServingLogic::receive_event, this, 1,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
И есть клиент:
void send(const char* text, int length) {
if (length > BUFFER_SIZE)
return;
strcpy_s(buffer_sender, length, text); //buffer_sender has enough memory
boost::asio::write(*socket_sender,boost::asio::buffer(buffer_sender, length));
}
////////////////////////////////// использование клиента
char subscribe[] = { 0x55, 0x03, 0x00, 0x11,
0b10001000,
0b00010000,
0b00000001,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000
};
client.send(subscribe, 15);
Итак, когда я пытаюсь использовать этот код, он работает правильно с первого 0x00.После этого в буфере будут храниться только 0xFE значения 12 раз.Память серверного буфера (receive_buffer [1]) после получения:
0x000001DA89F70160 55 03 00 fe fe fe fe fe U..ююююю
0x000001DA89F70168 fe fe fe fe fe fe fe 00 ююююююю.
Первые 3 символа были получены правильно, включая 0x00.но после этого я получаю 0xFE, эта длина 12;
Как правильно получать данные целиком?