Я начал изучать возможность подключения к другим пользователям с помощью соединения p2p, поэтому я написал простую программу сокетов на JAVA для устройств Android, в которой пользователь, в котором пользователи могут делиться простыми сообщениями p2p (я понятия не имел о NAT затем). Я узнал о NAT, поэтому теперь мне нужно установить TCP-соединение с другим пользователем, который использует сервер для обнаружения, но полезная нагрузка передается p2p. Я также посмотрел на XMPP (очень хорошее и подробное объяснение того, как работает протокол, Вот) и UPnP, но я не знаю, как их реализовать.
Еще один интересный вопрос, который возникает, касается BitTorrent, потому что они могут работать на любом устройстве и даже за NAT. Я не могу получить никаких объяснений того, как работает BitTorrent.
Я много исследовал, но застрял.
Мои вопросы:
Редактировать:
Один из обсуждаемых в сети методов обхода NAT - это использование SIP. Это сработало для Bleep, но я не могу найти его реализации в сети. Может кто-нибудь объяснить, как на самом деле работает SIP.