PDA

Ver la Versión Completa : [ CONSULTA ] Conexión entre dispositivos android


cadira3
29/05/11, 17:54:19
Hola a todos!

Soy un estudiante de tercero de ingeniería en informática.

Estoy haciendo una aplicación para android para la cual necesito Enviar mensajes entre 2 dispositivos android. La cuestión es que estoy un poco perdido.

He trabajado con sockets en java, pero nunca he accedido a un dispositivo (pc o mobil) que esté fuera de mi máquina.

Alguien tiene expeciencia en este tema para guiarme un poco? O una buena guia donde hable de este estilo de conexiones?


Muchas gracias de antemano!

kriogeN
29/05/11, 18:10:42
Hola a todos!

Soy un estudiante de tercero de ingeniería en informática.

Estoy haciendo una aplicación para android para la cual necesito Enviar mensajes entre 2 dispositivos android. La cuestión es que estoy un poco perdido.

He trabajado con sockets en java, pero nunca he accedido a un dispositivo (pc o mobil) que esté fuera de mi máquina.

Alguien tiene expeciencia en este tema para guiarme un poco? O una buena guia donde hable de este estilo de conexiones?


Muchas gracias de antemano!

Pues exactamente igual, pero al crear el socket en lugar de que conecte a localhost tienes que hacerlo que conete a la IP (o nombre) de destino. Por supuesto el destino tiene que tener un socket en modo Listen (esto en Java se hace con un ServerSocket)

NOTA: Al ser dispositivos móviles quizás lo más correcto es que funcionasen a través de algún tipo de servidor, al cual conectan los móviles y es el encargado de hacer de intermediario. Lo digo porque en un móvil nunca vas a tener una IP fija.

cadira3
29/05/11, 18:30:12
Cuando hablas de utilizar un servidor de intermediario, te refieres a una máquina externa, o a un hilo/ejecución del dispositivo android?

Porque el caso que sea un servidor externo, tendría que tener en ejecución un programa que esté diseñado para realizar la tarea en cuestión (perdona mi ignorancia, pero nunca he trabajado con un servidor externo).


Muchas gracias por tu ayuda!

kriogeN
29/05/11, 18:40:44
Cuando hablas de utilizar un servidor de intermediario, te refieres a una máquina externa, o a un hilo/ejecución del dispositivo android?

Porque el caso que sea un servidor externo, tendría que tener en ejecución un programa que esté diseñado para realizar la tarea en cuestión (perdona mi ignorancia, pero nunca he trabajado con un servidor externo).


Muchas gracias por tu ayuda!

Claro, hablo de un servidor externo, si precisamente lo digo por el problema de la IP.

El programa en el servidor (no tiene porque ser un PC, puede ser cualquier cosa con una IP fija y sobre la que se pueda programar sockets) podría funcionar de 2 formas:

A) Tener tantos sockets servidor como móviles se puedan conectar, y los paquetes que recibe por el socket de un móvil los envía por el resto de sockets al resto de móviles.

B) Que el móvil que actuará como servidor se conecte al servidor externo y le diga su IP, los clientes lo que harán será conectarse al servidor externo y preguntar por la IP del móvil android que actua como servidor, al obtenerla se desconectan del servidor externo y se conectan al móvil.

cadira3
29/05/11, 19:11:41
Ahora estava pensando, si los dos dispositivos están en la misma red (wifi por ejemplo), su IP local puede servir no? Todo dependeria de si hay alguna forma de averiguar que dispositivos están conectados a una misma red.

Conoces alguna forma de averiguar-lo? Es mi idea equivocada?

PD: Reitero mis agradecimientos. Es un lujo poder beneficiar-me de una comunidad como esta, con gente formada y amable

kriogeN
29/05/11, 21:01:57
Si lo quieres para trabajar en la misma red te lo ahorras todo, le asignas una IP fija a cada móvil y a correr. No se exactamente para que quieres la aplicación, si te vale así pues adelante, pero siendo dispositivos móviles lo ideal es que la aplicación también sea móvil.

cadira3
29/05/11, 22:21:24
Si lo quieres para trabajar en la misma red te lo ahorras todo, le asignas una IP fija a cada móvil y a correr. No se exactamente para que quieres la aplicación, si te vale así pues adelante, pero siendo dispositivos móviles lo ideal es que la aplicación también sea móvil.

La idea és que los 2 dispositivos estén en una misma habitación. Uno seria un set-top box y el otro una tablet o telefono.

De esta forma me podría saltar la parte del servidor, y solo tendría que buscar como asignar IP en una NAT.

cadira3
31/05/11, 20:04:42
Necesito una ayudita! Provando a realizar una conexión simple cliente/servidor, me encuentro con que la aplicación me fuerza el cierre.

Lo raro és que solo me passa cuando hago el Socket socket = serverSocket.accept()...

Si comento esta linea funciona y si la ejecuto me peta. Al ser mi primera aplicación en android puede que sea algo de configuración?


Muchas gracias por la ayuda!