Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Продвижение и оптимизация сайтов > Архитектура голосового чата.


Автор: val 11.8.2005, 15:40
Привет, всем!
Сейчас занимаюсь разработкой многопользовательского голосового чата. Для инициализации сессий я использую протокол SIP, ну а голос, непосредственно, гоняется по RTP. В локальной сети все работает просто замечательно, но как только начал тестирование на просторах Интернета, возникли проблемы.
Итак, все по порядку. Инициализация сессий идет по протоколу TCP/IP через 80-порт. С этим проблем нет, ну а потом начинается RTP-стриминг через UDP-порты. Но вот загвоздка в том, что практически все файерволы эти самые UDP порты держат закрытыми и никакого стриминга не пропускают. Вот и загибается моя программка. Просить открывать порты это не выход и не решение. Короче не знаю, что и делать, но очень бы хотелось иметь нормальный UDP-стриминг.
Есть такая программка Skype. Так вот, её авторы как-то умудрились организовать такой стриминг, при этом точно могу сказать, что сессии устанавливается через 80-порт, а как звук идет - не понятно. Кто знает, подскажите, пожалуйста?

Автор: Retro 12.8.2005, 16:03
Цитата(val @ 11.8.2005, 15:40)
Но вот загвоздка в том, что практически все файерволы эти самые UDP порты держат закрытыми и никакого стриминга не пропускают.

Не понял вопроса, мой файервол в любом случае заблокирует любое соединение (входящее или исходящее) если я не дам разрешения на выполнение, как тот же Skype который при первом запуске был блокирован и только после моего разрешения соединился с сервером, соответственно он может использовать любые порты т.к. я поставил в файерволе - "Доверять приложению".
Только что глянул специально smile , Skype исрользует UDP порты для соединения и все ОК.

Автор: DENNN 15.8.2005, 09:59
Думаю проблема в том, что один из хостов находится за NAT'ом. попробуй сначала иницировать UDP соединение на клиенте, а сервер уже будет отвечать на тот адрес и порт, что открылсяу клиента. Может плохо объяснил, но думаю суть понятна.

Автор: val 15.8.2005, 17:14
Всем спасибо, разобрался. Надо просто самому открывать сокеты, а не слушать порты. Вот и всё.
Retro, файервол твоего провайдера скорее всего тоже блокирует порты на входящие соединения, а надо создавать исходящие, тогда будет всё ок. :-).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)