Я ищу решение для обмена информацией с использованием (UDP
или TCP
) между терминалами или узлами Android, разделенными ** NAT **, предположим, что A
и B
- это два клиента Android.
Я работаю над "удаленным приложением VoIP", в котором клиенты напрямую общаются друг с другом.
Для реализации STUN Server и NAT Traversal я использовал STUN server
программное обеспечение с открытым исходным кодом, а именно STUNTMAN.
На стороне клиента, чтобы получить Public IP: PORT
от STUNTMAN
, я интегрировал stun-client с открытым исходным кодом как "JSTUN», который представляет собой клиент STUN на основе Java.
В клиенте-A результаты примера ** STUNTMAN Server ** выглядят так:
stunclient --mode full --localport 9999 stun.stunprotocol.org
Binding test: success
Local address: 192.168.1.8:9999
Mapped address: 1.2.3.4:9999
Behavior test: success
Nat behavior: Endpoint Independent Mapping
Filtering test: success
Nat filtering: Address and Port Dependent Filtering
Чтобы установить одноранговую связь между клиентами Android, я установил signaling server
, который точно передает сопоставленные адреса между клиентами A и B.
Но когда я попытался запустить одноранговую связь с использованием сокетов UDP или TCP, такой связи между ними не было.
Я также пробовал это решение на StackOverflow как confusion-about-stun-server и < href="https://stackoverflow.com/questions/17502818/android-ios-peer-to-peer-architecture">архитектура android-iOS-peer-to-peer. Я не могу понять, где я делаю неправильно?
Есть ли возможность поддерживать связь P2P для VoIP?
Есть ли какое-либо приложение VoIP с функцией P2P? (Изначально Skype был основан на одноранговой архитектуре.)
Мне нужен программный пример, а не ответ, основанный на теории.