Почему не работает собственная реализация UDP Hole Punching?
Не хочет работать моя реализация UDP hole punching.
Участвуют:
Сервер (публичный)
Клиент 1 (за NATом)
Клиент 2 (за NATом)
Как я делаю:
1) Клиент 1 запрашивает у Сервера прямое соединение с Клиентом 2. (они уже подключены к нему по TCP)
2) Сервер командует подключится обоим, с помощью UDP, к нему. Фиксирует уделенные адреса обоих UDP соединений.
3) Сервер посылает команду Клиенту 2, принять UDP соединение. (При этом Клиент 2 также получает адрес Клиента 1. На который он посылает пакет, да бы создать на роутере временное правило)
4) Сервер посылает команду Клиенту 1 подключится с того же адреса(которого он подключился к серверу, и на который отправил пакет Клиент 1) к Клиенту 2.
Что вы имеете в виду, под неправильным протоколом?
Я видел эту статью, к сожалению знание моего англ, не на таком высоком уровне что бы разобраться что там к чему.
Пункты 3 и 4 крайне тяжело понять. И где остальные пункты, где происходит подключение клиентов между собой?
Попробуйте с google translate и нормально опишите алгоритм, с тремя сторонами, кто и что куда посылает.
Также проверьте, возможно ли на вашем оборудовании сделать Hole Punching, это не всегда возможно.
Все, заработал. Всему виной то, что забыл установить порт при подключении напрямую... в общем алгоритм выше рабочий, если кто нибудь таки поймет, то, что я написал.