STUN, TURN, ICE библиотека для Java - PullRequest
21 голосов
/ 11 января 2010

Мне нужно установить соединение P2P UDP и TCP между двумя пользователями. Они оба за NAT.

Небольшое исследование приводит меня к Оглушение , Поворот и Лед .

Существует ли какое-либо решение (библиотека) Java, кроме jSTUN , которое работает только по протоколу UDP. И ОБРАТИТЕСЬ, ЛЕД намного лучше для симметричной проблемы NAT.

Ответы [ 3 ]

9 голосов
/ 17 декабря 2010

Не слишком много для моего собственного рога, но я мог бы рекомендовать попробовать IcedJava . (Это часть проекта SipTools) Он активно разрабатывается, имеет стабильную версию 0.9 и поддерживает сценарии использования, такие как потоковая передача RTP из коробки.

Что касается поддержки TCP, то это запланировано на более поздний выпуск, но вам будет трудно поддерживать TCP по симметричному nat из-за блокировки трехстороннего рукопожатия. Даже TCP-расширения спецификации ICE отмечают, что TCP-соединения с гораздо меньшей вероятностью будут успешными, чем UDP-соединения между узлами natted.

Тем не менее, вы можете обойти это путем маршрутизации пакетов TCP через мост UDP, включая все функции исправления ошибок и управления потоком. (Я забыл RFC для этого, но это окончательная спецификация) Тем не менее, все это относительно новые спецификации, а спецификация ICE-TCP еще не окончательная. Даже в активной разработке это займет время.

7 голосов
/ 24 октября 2011

Существует также ice4j , который по словам разработчиков:

Java-реализация протоколов STUN, TURN и ICE. Этот проект является продолжением инициативы Stun4J. Цель проекта - предоставить разработчикам VoIP Java средства обработки NAT и брандмауэров.

это было разработано разработчиками sipcommunicator.

2 голосов
/ 11 января 2010

Вы можете попробовать jstunt - больше не поддерживается, но источник, кажется, доступен. Они предоставляют jar с библиотекой STUNT и примерами приложений java-сервера / клиента. Насколько я понимаю, это не нативная Java, так что это может работать только на определенных архитектурах.

...