UDP Hole Punching (Java)

Я пытаюсь создать сокет-чат / приложение для передачи файлов уже несколько недель. Я часами искал в интернете кусок кода по дыроколу UDP, чтобы работать с ним, но я не нашел ничего, что работает или достаточно просто для использования.

Я пытаюсь получить два клиента за маршрутизаторами (NAT) для подключения друг к другу. Мне удалось настроить сервер, который разделяет IP-адреса и порты двух клиентов, но мне не удалось установить соединение. Есть ли где-нибудь исходный код, который я могу использовать?

Я нашел несколько библиотек STUN/ICE/TURN, таких как JStun, но нет документации о том, как их использовать. Нужен ли сервер STUN для запуска соединения? Могу ли я использовать общедоступный, например, numb.viagenie.ca или http://www.stunserver.org/?

Любые ответы будут с благодарностью. Спасибо!

РЕДАКТИРОВАТЬ: у меня было немного больше возни, и я обнаружил, что STUN довольно легко сделать даже с помощью PHP. Я настроил свое собственное оглушение PHP, которое просто разделяет данные двух клиентов. Сложная часть заключается в соединении двух клиентов, но для этого используется нечто, называемое ICE. Спасибо Селби, которая разместила это в комментариях. Это привело меня на правильный путь с ICE. Я оставлю этот вопрос открытым немного дольше на случай, если кто-нибудь придумает что-нибудь еще. Я начну кодировать свой собственный код ICE или попробую поискать что-нибудь онлайн. Спасибо!

1 ответ

Пример UDP Hole Punching в чистой Java можно найти здесь: https://github.com/lklacar/java-hole-punching

Больше не поддерживается, но здесь есть структура для процесса STUN и т.д.: https://github.com/htwg/UCE

Я пытался заставить UDP Hole Punching работать с Java-клиентами и PHP-сервером, но пока не смог заставить его работать. Если у вас есть, вы можете поделиться им с нами и ответить на следующий вопрос: Пример кода Java-клиента PHP-сервера UDP Hole Punching

Другие вопросы по тегам