Пропущенная проверка при чтении сетевого пакета может помочь атакующему уронить сервер. Гленн Фидлер заменяет ручные проверки одним методом
Serialize. ReadStream и WriteStream дают одинаковый интерфейс, а шаблоны C++ собирают из него функции чтения и записи.Каждый вызов проверяет диапазон значения и границу буфера; ошибка возвращает false и прекращает разбор без исключений. Для покоящегося физического тела можно отправить один бит вместо линейной и угловой скорости. Число от 0 до 10 с шагом 0,01 превращается в целое от 0 до 1000: меньше битов в пакете при заданной точности.
В разборе Gaffer On Games есть реализация потоков, чисел, векторов и кватернионов. Для собственного сетевого протокола это способ не дублировать код и проверки.
