Я создаю протокол, позволяющий двум приложениям общаться по потоку TCP / IP, и выясняю, как создать заголовок для моих сообщений. Используя заголовок TCP в качестве начального руководства, мне интересно, понадобится ли мне заполнение. Я понимаю, что когда мы имеем дело с кешем, мы хотим убедиться, что хранимые данные помещаются в строку кеша, чтобы при их извлечении это делалось так эффективно. Однако я не понимаю, как имеет смысл заполнять заголовок, учитывая, что приложение будет анализировать поток байтов и сохранять его так, как считает нужным.
Например: я хочу отправить заголовок сообщения, состоящий из 3-байтового поля, за которым следует 1-байтовое поле заполнения для 32-битного выравнивания. Затем я отправлю сообщение поверх данных.
В этом случае получатель просто возьмет 3 байта из потока и выбросит заполненный байт. А затем начните читать данные сообщения. На мой взгляд, он не будет хранить 3 байта и данные сообщения так, как он хочет. Весь смысл выравнивания байтов таков, что он будет получен эффективным способом. Но если ретривер не заботится о заполнении, как оно будет эффективно извлечено?
Без дополнения ретривер просто берет 3 байта заголовка из потока и затем получает байты данных. Поскольку ретривер хранит эти байты по своему усмотрению, какое это имеет значение, будет ли выполнено заполнение или нет?
Может быть, я упускаю точку заполнения.
Немного трудно извлечь вопрос из этого поста, но из того, что я сказал, вы, ребята, вероятно, можете указать на мои заблуждения.
Пожалуйста, дайте мне знать, что вы, ребята, думаете.
Спасибо,
JBU