UDP, датаграммы и звук в Java - PullRequest
1 голос
/ 06 февраля 2012

Мне нужен пример кода отправки звуковых пакетов UDP, например, использование дейтаграмм для отправки звука с сервера, который записывает звук с микрофона, на клиент, который только слушает звук. Может кто-то помочь мне, пожалуйста? Я нашел действительно хорошие примеры, но все они используют TCP и сокеты (как этот http://www.developer.com/java/other/print.php/2105421),, а не DatagramSocket, я был бы очень признателен за вашу помощь.

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Отправка через UDP немного глупа. UDP может поступать в любом порядке и не имеет последовательности в протоколе. Это означает, что вы можете или не можете получить пакет, и вы можете получить пакет два до одного и не иметь возможности узнать (не написав некоторый код для их упорядочения), который является первым.

Отбросьте UDP и используйте TCP.

EDIT:

Хорошо, предполагая, что вы должны использовать UDP, тогда примерно я бы сделал это так (предполагая, что вы можете отправить пакет UDP)

1) создать схему данных для инкапсуляции в UDP следующих данных

порядковый номер пакета Данные Контрольная сумма Crc

2) на стороне клиента вам понадобится буфер для заказа и повторной сборки данных

Это буферизует пакеты, упорядочивает и при заданной длине буфера повторно собирает данные (либо не вставляя аудио, либо обрезая там, где пропущены порядковые номера)

Вам также нужно было бы определить, какая скорость передачи данных считается для самого слабого соединения. Лучше потерять зернистость звука, чем иметь очень четкие фрагменты звука.

Примечание. CRC также может быть объединен с длиной данных.

Hth

0 голосов
/ 06 февраля 2012

Дайте этим ссылкам попробовать:

  1. Упрощенное вещание музыки Java через UDP
  2. TCP / IP, UDP и многоадресная рассылка через сокет Java
  3. Отметьте Статья по интерактивной телефонии , особенно пример Потоковый класс

А затем прочитайте немного о DatagramSocket Класс в Java. Этот урок l должен окончательно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...