Варианты одноранговой связи - PullRequest
23 голосов
/ 18 февраля 2011

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

Изменилось ли это вообще, и как бы вы работали в одноранговой сети?передача данных?

Ответы [ 5 ]

20 голосов
/ 01 марта 2011

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

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

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

4 голосов
/ 18 февраля 2011

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

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

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

3 голосов
/ 08 марта 2012

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

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

1 голос
/ 19 февраля 2011

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

0 голосов
/ 12 апреля 2013

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

...