Одной из рекомендаций является отправка простых пар имя / значение, если вам необходимо полностью придерживаться потока текстового типа ASCII. Имя ключа используется для описания имени поля, которое каждое значение передает аналогично исходному предложению:
##keyName1=value1#keyName2=value2#
В качестве альтернативы, вы можете отправлять данные в двоичном теговом формате, например:
<tagCodeNum><lengthInBytes><tagValueAsBytes>
где tagCodeNum - это, возможно, байт или слово, а длина - это байт или слово, в зависимости от ваших потребностей. Идея этого формата заключается в том, что получатель может распознавать поля, которые он понимает, по номеру кода, а затем может также пропустить теги, которые он не знает, как декодировать. Таким образом, кодирование становится расширяемым. Если вам нужно сгруппировать несколько тегов в логические сообщения, я бы обернул группу этих двоичных кодированных тегов в общую иерархию сообщений:
<messageCodeNum><lengthInBytes><tag><tag><tag>
Если тег выше является копией предыдущей конструкции тега, описанной выше, а длина описывает длину в байтах всех тегов, объединенных вместе.
Примечание: Если вы думаете об этой структуре, она не сильно отличается от структуры типа XML, но она намного более краткая и ограниченная, так что ее почти тривиально декодировать.