2012-07-01 2 views
0

Мне нужно сделать одноранговое соединение между двумя телефонами Android, работающими на веб-сервере i-jetty через канал gprs. Но многие операторы мобильной связи блокируют входящие подключения к телефонам. Там есть это вокруг?Android Peer-to-Peer Connection

ответ

1

Проникновение NAT достаточно сложное, что вы действительно не должны возиться с ним, пока не познакомитесь с внутренними сетями. autonomous NAT traversal, используемый pwnat, в настоящее время является довольно современным.

Основная идея состоит в том, чтобы использовать тот факт, что маршрутизатор может иметь любой IP-адрес и, насколько известно NAT, любой IP-адрес источника действителен для сообщения об ошибке ICMP, которое NAT будет перенаправлять его клиенту.

Обратите внимание, что вы можете получить только UDP. Таким образом, вам придется реализовать собственный протокол байтового потока.

1

В общем, самый надежный способ заставить два телефона разговаривать друг с другом - использовать C2DM (или GCM, теперь). Возможно, вы можете использовать устройства для обмена своими IP-адресами с помощью C2DM (что может вообще не получить вас, btw, если это адрес за маршрутизатором или брандмауэром с заблокированными портами). Вы также можете использовать SMS в зависимости от потребностей ваших приложений.

Обычно у вас был задействованный сервер - дополнительная разработка, но для коротких сообщений я не понимаю, почему одно устройство не может напрямую отправлять через C2DM на другое устройство. (Это непроверенный отчет, будьте осторожны.)