Я изучаю использование voip over udp в небольшой сети.Я знаю, что есть несколько библиотек, готовых сделать и перестараться со всем, что мне когда-либо нужно, с помощью нескольких вызовов методов, но, как я уже сказал, я учусь, поэтому мне нужно заново изобрести колесо, чтобы увидеть, как оно работает.
ЯВ настоящее время исследуется класс DatagramPacket, и я заметил, что в классе DatagramPacket нет метода, который бы устанавливал информацию заголовка (т. е. порядковый номер порядка пакетов, который мне нужно знать для чередования).
Небольшой код для отражениясреда:
byte[] block;
DatagramPacket packet; // UDP packet
/* x Bytes per block , y blocks per second,
z ms time block playback duration */
block = recorder.getBlock(); // assume I have class that handles audio
// recording and returns speech in a
// uncompressed form of bytes
packet = new DatagramPacket(block, block.length, clientIP, PORT);
Во-первых, я предполагаю, что, поскольку это UDP, отправителю на самом деле все равно, кроме простого факта, что он куда-то перебрасывает пакеты.Вот почему внутри такого метода нет.
Во-вторых, я предполагаю, что мне нужно сделать это самому - добавить дополнительные байты в блок байтов, который будет отправлен, который будет содержать порядковый номер пакета?Однако я также обеспокоен тем, что если я это сделаю, то как мне распознать, что байты являются байтами заголовка, а не байтами аудио?Я могу предположить, что первый байт представляет число, однако мы знаем, что байт может представлять только 258 чисел.Я никогда раньше не работал на байтовом уровне.Или, может быть, есть другие методы?
Коротко говоря, для чередования мне нужно знать, как настроить порядковый номер пакета , поскольку я не могу заказать неупорядоченные пакеты :-)
Спасибо,