Подтвердить что ты не робот

Библиотека STUN, TURN, ICE для Java

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

Небольшое исследование приводит меня к STUN, TURN и ICE.

Есть ли какое-либо Java-решение (библиотека), кроме jSTUN, которое, похоже, работает только на UDP. И TURN, ICE намного лучше для симметричной проблемы NAT.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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