Отправка через UDP немного глупа. UDP может поступать в любом порядке и не имеет последовательности в протоколе. Это означает, что вы можете или не можете получить пакет, и вы можете получить пакет два до одного и не иметь возможности узнать (не написав некоторый код для их упорядочения), который является первым.
Отбросьте UDP и используйте TCP.
EDIT:
Хорошо, предполагая, что вы должны использовать UDP, тогда примерно я бы сделал это так (предполагая, что вы можете отправить пакет UDP)
1) создать схему данных для инкапсуляции в UDP следующих данных
порядковый номер пакета
Данные
Контрольная сумма Crc
2) на стороне клиента вам понадобится буфер для заказа и повторной сборки данных
Это буферизует пакеты, упорядочивает и при заданной длине буфера повторно собирает данные (либо не вставляя аудио, либо обрезая там, где пропущены порядковые номера)
Вам также нужно было бы определить, какая скорость передачи данных считается для самого слабого соединения. Лучше потерять зернистость звука, чем иметь очень четкие фрагменты звука.
Примечание. CRC также может быть объединен с длиной данных.
Hth