Невозможно определить, было ли число отправлено с порядковым или большим порядковым номером, если только не существует очень строгих ограничений на числа, так что их можно понять только одним способом, то есть быть слишком большим или слишком маленьким, если их понимать в Неправильный путь.
Стандартный способ сделать это - добавить заголовок к вашему пакету, который предоставляет информацию о его содержимом, например, о его полезной нагрузке с большим или младшим порядковым номером. Или вы можете всегда посылать пакеты с прямым или прямым порядком байтов, при этом отправитель и получатель динамически меняют байты, если это необходимо.
Помните, что, как говорит Википедия о протоколе пользовательских дейтаграмм :
Он не имеет диалоговых окон подтверждения связи и, таким образом, подвергает программу пользователя ненадежности базовой сети: нет гарантии доставки, заказа или защиты от дублирования.
UDP в основном используется, когда данные передаются в потоковом режиме, но доставка всех пакетов не важна. Например, камера слежения, отправляющая видео, когда допустимо потерять несколько кадров при получении либо поврежденных, либо не в порядке.
Сервер, который делает сумму чисел, не является хорошим кандидатом для UDP, потому что, если пакеты потеряны или повреждены, то сумма будет неправильной.
TCP, который гарантирует правильную доставку, должен быть предпочтительным здесь.
Встраивая отказоустойчивые меры в свой поток UDP, вы скоро заново изобретаете TCP.
Самое простое решение для отслеживания входящих сообщений состоит в том, чтобы ваш сервер дополнительно печатал информацию на консоли.
Это может контролироваться параметром, указанным при вызове, или директивой препроцессора отладки (#ifdef для C/C++).