Примеры реализации техник обхода NAT в (android?) p2p-приложениях
В настоящее время я работаю над одноранговым приложением Android. Конечно, вскоре мы поняли, что одна из самых сложных задач - выяснить, как пройти через NAT, чтобы 2 устройства (или более) могли обмениваться данными друг с другом через Интернет, независимо от расстояния между ними.
Я провел некоторое исследование, прочитал о STUN(T), ICE, TURN и нашел несколько реализаций, включая Ice4j, JStun, IcedJava, NUTSS...
Знаете ли вы о примерах практического использования хотя бы одного из этих методов, возможно, в существующих (android или других) одноранговых приложениях? Наиболее полезными для нас будут те, которым не нужно приложение, чтобы использовать какой-либо дополнительный сервер ретрансляции.
Другие предложения приветствуются!
Заранее большое спасибо:)
2 ответа
Просто чтобы узнать IP устройства и порт по NAT, другое устройство подключается к одному. Реализация IcedJava RFC5389, реализация JStun RFC3489.
AFAIK Невозможно избежать какого-либо ретрансляционного сервера с приложениями Android: IP-адреса, назначенные мобильным устройствам телекоммуникационными компаниями, не являются фиксированными и не являются общедоступными: невозможно установить прямое соединение с мобильным устройством.