Вы можете создать префикс символьного буфера, который будет предшествовать каждому целому числу, которое будет определять, какой тип целого числа читать, так что вы можете прочитать правильный размер определенного целого числа.
для примера: предшествовать каждомуцелое число с символом, представляющим целое число. Первый байт будет содержать символ, который вы будете интерпретировать как, это может быть любой символ ascii, который будет представлять целое число.
array == [byte] [byte-8bit] [byte] [2 byte-16 бит] [байт] [4 байта -32 бита] ...
UINT8 = 'a' UINT16 = 'b' UINT32 = 'c' или любой другой код, который вы хотите, чтобы ascii был ... Я использовал, b, c, так что это читаемый символ, который вы можете прочитать в отладчике
Затем вам нужно будет создать массив для отправки с префиксом, чтобы вы знали, какой размер делать при следующем чтении.
array = [a0b00c0000a0b00c0000] и так далее, вы можете построить массив, используя memcpy
Затем вы можете отправить весь пакет размером 128 байт
Убедитесь, что вы прочитали ровно 128 байт, а затемвы можете деконструировать, помните, что когда вы читаете, вы должны проверить сумму, прочитанную из сокета, и продолжать читать, пока не получите правильную сумму. - иногда чтение не возвращает правильное количество байтов, которое вы ожидаете.
Когда вы получаете пакет, вы можете деконструировать пакет, используя заголовки, и в зависимости от полученного заголовка вы можете удалитьправильное целое число и размер, а заголовки с правильным размером должны быть довольно легко деконструированы.
Также помните, что UDP с потерями, поэтому вы, возможно, потеряете пакеты
Теперь также помните, что если ваш построенныйпакет не равен точно 128 байтам каждый раз, когда вам нужно будет добавить еще один байт, который будет эквивалентен целому числу, которое точно скажет вам, сколько байт было отправлено ... 122..126..127 и т. д., и прочитайте его какпервый заголовок на другой стороне.