У меня есть несколько простых вопросов, у меня есть клиент-серверное приложение и данные, отправленные по проводам.
Я бы хотел иметь возможность восстановить данные и правильно их обработать.
struct T1
{
int id;
int foo;
};
struct T2
{
int id;
char foo;
int bar;
};
Давайте возьмем эти структуры, они отправляются по сети, перед которой стоит int, который сообщит, следует ли T1 или T2.Если клиент отправляет мне T1, а затем отправляет мне T2, могу ли я быть уверен, что смогу прочитать полную структуру с помощью asio :: ip :: tcp :: socket.async_read ()?Я хотел бы установить обработчик, который будет обрабатывать одну структуру, однако что произойдет, если я не смогу прочитать все в одном async_read ()?
Асинхронная операция будет продолжаться довыполняется одно из следующих условий:
- Поставленные буферы заполнены.То есть переданные байты равны сумме размеров буфера.
- Произошла ошибка.
Будет ли отбрасываться информация, которую невозможно прочитать?это вызовет другой async_read?И я уверен, что async_read получит только одну структуру ID +, если мой клиент отправит мне последовательно структуру ID +?Или ОС может оптимизировать вещи и поместить их в один пакет?Как вы, наверное, видели, я немного растерялся, я хотел бы принимать правильные решения при разработке серверного / клиентского приложения, любая помощь будет принята с благодарностью.
Спасибо.