|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Conexión Cliente-Server-Cliente
Buuuuenas. Como ya sabreis estoy con los sockets blablabla.....
Budnl , he conseguido enviar una imagen desde un cliente a un server por socket y al recibirla hacerle unas cosillas. Lo que quiero es que esa imagen la envíe desde ese mismo server a OTRO cliente diferente. ¿Se puede? Gracias ![]() ![]() ![]()
__________________
BetaTester
Actualmente, SlimpLP+ ![]() |
|
#3
|
||||
|
||||
Ajam, pero si tengo por ejemplo 7 clientes conectados, como específico a cual enviárselo?
__________________
BetaTester
Actualmente, SlimpLP+ ![]() |
#4
|
||||
|
||||
Si tuvieras 7 clientes conectados tendrías 7 objetos Socket, uno por cada conexión abierta. La forma de distinguirlos si no tienes más información es por la dirección IP del cliente, que la puedes saber con el método getRemoteSocketAddress() de cada socket.
Probablemente lo que quieres hacer es más complicado y requiera al menos de un intercambio de información inicial entre el cliente y el servidor para que el cliente se identifique con un nombre de usuario o identificador único, así ya no tienes que andar sabiendo IPs.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#5
|
||||
|
||||
Para casos como este, y más aún siendo conexiones con móviles, lo mejor es usar WebSocket. No tendrás problemas de puertos y sus funciones basadas en eventos se acondicionan mejor a Java.
|
#6
|
||||
|
||||
Los websockets se crearon para los navegadores que no tenían una forma de comunicarse de forma bidireccional por cómo fue concebido HTTP en su momento. De hecho, al final es un "apaño" de la conexión HTTP (que no deja de ser un socket TCP) para acordar reutilizar la conexión TCP y utilizarla para envío y recepción de mensajes de texto o binarios.
Problemas de puertos va haber igualmente porque es una conexión TCP, e incluso problemas de proxys HTTP que por lo que sea no sean compatibles con websockets y no hagan el "upgrade". Las bibliotecas como AndroidAsync (¿alguna otra recomendada para WS @kriogeN?) ofrecen una interfaz con listeners muy sencillos (mensaje de texto recibido, mensaje binario recibido), pero también hace falta un servidor compatible con websockets (yo uso Netty 4.0, pero para enviar un fichero es matar moscas a cañonazos, con node.js seguro que se tarda menos y el código es más legible).
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#7
|
||||
|
||||
Para Android uso Autobahn:
http://autobahn.ws/android Como los servidores que programo son todos ASP.NET tienen soporte nativo de WebSocket. Mi experiencia es que los WebSocket funcionan mucho mejor a través de Proxys al ir encapsulado sobre HTTP, además de que me parecen bastante más sencillos de programar que los Sockets tradicionales. Tanto a nivel de cliente como de servidor. |
Gracias de parte de: | ||
#8
|
||||
|
||||
Entonces que hago? XDD
__________________
BetaTester
Actualmente, SlimpLP+ ![]() |
#9
|
||||
|
||||
De momento leer mucho sobre cómo hacer aplicaciones con conectividad de red en Android y tal vez de HTTP y de websockets para que valores qué te resulta más cómodo.
Según tus requisitos puede haber más trabajo en la parte de servidor que en la de cliente. Y no tienes por qué hacer en Java el servidor, puede ser PHP, node.js, etc... Enviar o recibir ficheros se puede hacer con un servidor web normal y corriente también, la dificultad viene si quieres que al subir un fichero avise a alguien para que se lo baje. Si está conectado por socket o websocket es cuestión de enviarle por ese canal bien el fichero o una URL para que se lo descargue. Si no está conectado, o bien el cliente pregunta al servidor periódicamente si hay ficheros nuevos o bien usa el Google Cloud Messaging (GCM) para ser notificado. Distintos métodos, cada uno con sus pros y sus contras.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
|
#10
|
||||
|
||||
Lo que tengo pensado es hacer un ping al Pc del cliente y si esta conectado enviarle la foto y sino por correo electrónico
__________________
BetaTester
Actualmente, SlimpLP+ ![]() |
#11
|
||||
|
||||
Si tuvieras 7 clientes conectados tendrías 7 objetos Socket, uno por cada conexión abierta. La forma de distinguirlos si no tienes más información es por la dirección IP del cliente, que la puedes saber con el método getRemoteSocketAddress() de cada socket.
Probablemente lo que quieres hacer es más complicado y requiera al menos de un intercambio de información inicial entre el cliente y el servidor para que el cliente se identifique con un nombre de usuario o identificador único, así ya no tienes que andar sabiendo IPs. ![]()
__________________
BetaTester
Actualmente, SlimpLP+ ![]() |
![]() |
![]() |
||||||
|
Herramientas | |