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

Как отправить данные с одного устройства Android на другой?

Привет всем, мне было интересно, какие опции мы должны обменивать данными между двумя различными устройствами Android?

Например, User-A и User-B устанавливают мое приложение. Я бы хотел, чтобы User-A отправил данные (возможно, просто сообщение или информацию о местоположении пользователя) в User-B.

Мне нужна функциональность, похожая на функциональность, которую WhatsApp имеет. Однако, в отличие от WhatsApp, у меня нет сервера, и мне было интересно, можем ли мы осуществлять обмен данными между двумя различными устройствами Android без сервера?

Я думал, что мы построим его поверх SMS или что-то в этом роде.

4b9b3361

Ответ 1

Параметры обмена информацией между устройствами следующие:

  • Bluetooth - это будет между двумя устройствами в непосредственной близости
  • TCP/UDP IP-соединение - это будет использование TCP для открытия сокета напрямую на другой серверный сокет. Это может быть размещено на телефоне или на общем сервере. Есть плюсы и минусы для обоих.

Прокси bluetooth не понадобится для центрального сервера. Большой недостаток - это означает, что вы можете обмениваться данными между двумя людьми, находящимися в радиусе 20 метров. Другим недостатком является то, что вам нужно соединить устройства, которые не все считают самыми легкими.

Вы можете использовать соединения TCP/IP для обмена данными так же, как любая клиент-серверная программа, которую вы пишете на традиционном компьютере. Это можно использовать независимо от того, использует ли ваш телефон 3G/4G/WIFI/EDGE или будущие протоколы радиосвязи. Проблема в том, что IP-адрес телефона может быть недоступен в глобальном масштабе. IP-адрес телефона может быть не маршрутизируемым, как частный IP. Они могут быть за брандмауэром или NAT-адресом.

Здесь центральный сервер, вероятно, необходим для обмена IP-адресами для пользователей или для общего доступа для клиентов, которые могут блокировать инфраструктуру. Вот где такие протоколы, как SWIFT, пригодится для прыжковых брандмауэров. Даже с такими вещами, как P2P, вы все еще сталкиваетесь с этими типами проблем с недоступными устройствами, и трюки, подобные этому, должны использоваться для обхода вокруг них. К сожалению, это означает, что вам, вероятно, нужен центральный сервер даже с моделью P2P.

Ответ 2

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

Если вы хотите использовать серверный подход, вы можете подписаться на Google App Engine, который имеет хороший интеграция Eclipse, а также плагин для легкого взаимодействия с Android. Это предоставит вам инфраструктурный вариант без первоначального (или, возможно, никогда не зависящего от того, насколько высоко вы масштабируетесь), чтобы положить деньги.

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