Подтвердить что ты не робот

Параметры обмена одноранговой связью

может кто-нибудь подтвердить, какие в настоящее время допустимые методы для одноранговых связей в рамках Android? Мне нужно передать строки json, и в настоящее время я использую SMS, который работает нормально, но проблема в том, что данные также заканчиваются множеством текстовых сообщений. Я прочитал первый выпуск Профессиональной разработки приложений для Android от Reto Meier, где он говорит, что параметры передачи данных не были реализованы из-за проблем с безопасностью.

Это вообще изменилось и как бы вы выполняли передачу данных по принципу "равный-равному"?

4b9b3361

Ответ 1

Вы просмотрели Qualcomm AllJoyn library? Он предназначен для работы через Bluetooth или Wi-Fi, поэтому может поместиться, хотя, если вы подключаетесь через сети 3G или более широкого диапазона, это не сработает.

Учитывая разницу и надежность сетей между двумя удаленными устройствами не в одной сети, я бы поставил под вопрос, является ли одноранговое соединение лучшим решением, и рискну предложить рассмотреть возможность использования сервера приложений между ними, поэтому вы затем может использовать Сообщество Cloud to Device [устарело] (возможно, в тандеме с Google App Engine). то есть отправить сообщение, отправитель передает его на сервер, а затем сервер передает его получателю.

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

Ответ 2

Вы можете просто использовать сокеты UDP/TCP. В отдельном потоке вы настроили сокет-слушатель на стороне сервера и его. Конечно, ваше приложение должно быть запущено первым (или должно выполняться в фоновом режиме все время). Вот пример:

http://thinkandroid.wordpress.com/2010/03/27/incorporating-socket-programming-into-your-applications/

Если вам также необходимо найти одноранговое обнаружение, которое усложнит задачу.

Ответ 3

Вы также должны посмотреть на peerdroid, открытый проект с открытым исходным кодом здесь. Я просматривал параметры обмена сообщениями с точки зрения наличия набора объединенных устройств (предварительно спаренных, если хотите, похожих на Bluetooth-соединение); эта библиотека выглядит так, что она может дать вам основу для того, что вы пытаетесь сделать.

Если вы находитесь в своей собственной сети (например, домашний или офисный WiFi), вы должны иметь возможность запрашивать другие подключенные устройства. Если сеть, в которой вы находитесь, не находится под вашим контролем (мобильная сеть или общедоступный Wi-Fi), тогда сеть будет настроена так, чтобы изолировать каждое устройство от всего остального. В этом случае у вас не останется другого выбора, кроме как поставить сервер на роль человека в середине. Это приносит свои архитектурные компромиссы - каждое устройство должно регулярно проверять сервер или открывать соединение - если вы не используете Google App Engine, который поддерживает push-уведомления через собственную инфраструктуру Google.

Ответ 4

Спасибо за ваш ответ ldx, но мне нужно было бы найти одноранговое открытие, как вы указали. Некоторые дальнейшие исследования показывают, что XMPP является подходящей технологией, и теперь есть некоторые предлагаемые услуги, хотя они, похоже, нацелены на "сервер" на уведомления клиентов. Здесь есть хорошее обсуждение здесь на XMPP и некоторые , хотя, похоже, все еще есть некоторые проблемы для решения таких задач, как опрос v push, длительные открытые http-соединения и время автономной работы. Xtify выглядит многообещающим, особенно их веб-сервисом. Надеюсь, что это предоставит подходящую информацию другим пользователям, изучающим тему одноранговой передачи данных.

Ответ 5

Попробуйте PushSharp. Библиотека на стороне сервера для отправки Push-уведомлений на iOS (iPhone/iPad APNS), Android (C2DM и GCM - Google Cloud Message), Windows Phone и Windows 8.