2012-01-10 25 views
18

Hola a todos, me preguntaba qué opciones tenemos para intercambiar datos entre dos dispositivos Android diferentes?¿Cómo enviar datos de un dispositivo Android a otro?

Por ejemplo, User-A y User-B instalan mi aplicación. Me gustaría que el Usuario-A envíe datos (posiblemente solo un mensaje simple o la información de ubicación del usuario-A) al Usuario-B.

La funcionalidad que necesitaría es similar a la funcionalidad que tiene WhatsApp. Sin embargo, a diferencia de WhatsApp, no tengo un servidor y me preguntaba si podríamos hacer intercambio de datos entre dos dispositivos Android diferentes sin un servidor?

Estaba pensando que lo compilamos encima de SMS o algo así.

+0

¿Qué se puede usar para enviar datos? Solo 3g? ¿Sólo wifi? ¿Bluetooth? una mezcla de todos estos? – user931366

+0

Creo que usando Bluetooth o Conexión WiFi puedes lograr esto. – Android

+1

de acuerdo. No vas a hacer esto más de 3g sin un servidor. – user931366

Respuesta

10

Opciones para el intercambio de información entre dispositivos son los siguientes:

  • Bluetooth - esto sería entre dos dispositivos en las inmediaciones
  • conexión TCP/UDP IP - esto sería utilizar TCP para abrir un socket directamente a otro socket de servidor. Eso podría ser alojado en el teléfono o en un servidor compartido. Hay ventajas y desventajas para ambos.

Los pros de bluetooth no serían necesarios para un servidor central. La gran desventaja es que esto significa que solo puedes intercambiar datos entre dos personas que se encuentran dentro de un rango de 20 metros. El otro inconveniente es que debe emparejar los dispositivos que no todos encuentran más fáciles.

Puede usar las conexiones TCP/IP para intercambiar datos como cualquier programa cliente-servidor que escriba en una computadora tradicional. Esto podría usarse sin importar si su teléfono está usando 3G/4G/WIFI/EDGE o futuros protocolos de radio. El problema es que la dirección IP del teléfono podría no ser accesible a nivel mundial. La dirección IP del teléfono puede no ser enrutable, como una IP privada. Pueden estar detrás de un firewall o una dirección NAT.

Aquí es donde probablemente se necesite un servidor central para intercambiar direcciones IP para los usuarios, o para servir como una ubicación común para los clientes detrás de la infraestructura que podría bloquear. Aquí es donde los protocolos como SWIFT son útiles para saltar cortafuegos. Incluso con cosas como P2P, aún se encuentra con este tipo de problemas con dispositivos no accesibles, y trucos como este tienen que usarse para rastrearlos. Desafortunadamente, eso significa que probablemente necesite un servidor central incluso con el modelo P2P.

+1

¿significa esto que puedo enviar algo por TCP/IP de Europa a EE. UU. Sin servidor en el medio? – 5er

+0

TCP/IP solo entre dos teléfonos sin servidor? No es muy poco probable. Incluso SWIFT, STUN, etc. requieren al menos un servidor para el descubrimiento. No se conecta al servidor para intercambiar datos, pero necesita descubrirse de alguna manera. Si conocía la dirección IP enrutable, podría hacerlo sin un servidor, pero esa es una situación extremadamente rara. – chubbsondubs

2

Sin un servidor externo para mantener una lista de todos los clientes conectados, deberá implementar la comunicación de forma P2P. Según las necesidades de su aplicación, puede hacer que el usuario escriba la dirección IP/correo electrónico/número de teléfono del otro usuario con el que desea intercambiar datos.

Si desea utilizar un enfoque de servidor, puede inscribirse para App Engine de Google que tiene buena Eclipse integration así como un plugin para interactuar fácilmente con una aplicación Android. Esto le daría una opción de infraestructura sin inicialmente (o tal vez nunca dependiendo de cuán alta sea su escala) teniendo que depositar dinero.

Google dio una buena IO talk mostrando un ejemplo de una aplicación web que puede comunicarse fácilmente con una aplicación de Android. Puedes extender esto para hacer lo que estás buscando hacer.

+0

¿Es posible construirlo encima de SMS? Es decir, envío un mensaje de texto del usuario A al usuario B y, de alguna manera, mi aplicación lee ese SMS y datos adicionales de él. – Pacerier

+0

Si se envía a través de sms, se notificará a todos los clientes de SMS de Android. ¿Está bien? ¿No quieres que solo tu aplicación tenga control sobre el contenido? – san

+0

@Pacerier: Depende de qué datos esté enviando. No es realmente la mejor manera de hacerlo, pero si está enviando mensajes cortos (144 caracteres es un límite bastante estándar, pero varía de operador a operador) puede funcionar. – Robert

Cuestiones relacionadas