Имеется некая структура, которую я передаю по сети.
Сейчас, когда структура сериализуется, я делаю так (псевдокод):
static uint32_t magicNumberBegin = ...
static uint32_t magicNumberEnd = ...
stream << magicNumberBegin << struct << magicNumberEnd;
send(stream);
read(stream);
stream >> magicNumberBeginTmp >> struct >> magicNumberEndTmp;
if (magicNumberBeginTmp == magicNumberBegin && magicNumberEndTmp == magicNumberEnd) {
// OK
} else {
//fail
}
Размер структуры - ~60 килобайт.
Вопрос: правильно ли я делаю? Если нет, какие предложение будут?
Считать, что порядок байт не имеет значения.
Вопрос 2: как контролировать, что с serial порта считались валидная строка? Строка будет <20 символов. Планирую приблизительно так же.
//device
send(magicNumberBegin, stringSize, string);
//reader
read(magicNumberBeginTMP, stringSizeTMP, string);
if (magicNumberBeginTmp == magicNumberBegin && stringSizeTMP == string.size()) {
//OK
} else {
//fail
}