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  
Viejo 30/04/15, 00:51:40
Avatar de MorSerNa
MorSerNa MorSerNa no está en línea
Miembro del foro
Mensajes: 478
 
Fecha de registro: feb 2015
Mensajes: 478
Modelo de smartphone: Huawei G510
Versión de ROM: SlimLP+
Tu operador: Yoigo
Mencionado: 6 comentarios
Tagged: 2 hilos
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
Responder Con Cita


  #2  
Viejo 30/04/15, 01:42:08
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Como poderse se puede, siempre y cuando el cliente esté conectado al Server en ese momento.
Responder Con Cita
  #3  
Viejo 30/04/15, 07:50:16
Avatar de MorSerNa
MorSerNa MorSerNa no está en línea
Miembro del foro
Mensajes: 478
 
Fecha de registro: feb 2015
Mensajes: 478
Modelo de smartphone: Huawei G510
Versión de ROM: SlimLP+
Tu operador: Yoigo
Mencionado: 6 comentarios
Tagged: 2 hilos
Ajam, pero si tengo por ejemplo 7 clientes conectados, como específico a cual enviárselo?
Responder Con Cita
  #4  
Viejo 30/04/15, 10:18:02
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #5  
Viejo 30/04/15, 11:36:43
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
  #6  
Viejo 30/04/15, 12:06:57
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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).
Responder Con Cita
  #7  
Viejo 30/04/15, 12:33:09
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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.
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 30/04/15, 13:46:06
Avatar de MorSerNa
MorSerNa MorSerNa no está en línea
Miembro del foro
Mensajes: 478
 
Fecha de registro: feb 2015
Mensajes: 478
Modelo de smartphone: Huawei G510
Versión de ROM: SlimLP+
Tu operador: Yoigo
Mencionado: 6 comentarios
Tagged: 2 hilos
Entonces que hago? XDD
Responder Con Cita
  #9  
Viejo 30/04/15, 14:13:27
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #10  
Viejo 30/04/15, 14:50:01
Avatar de MorSerNa
MorSerNa MorSerNa no está en línea
Miembro del foro
Mensajes: 478
 
Fecha de registro: feb 2015
Mensajes: 478
Modelo de smartphone: Huawei G510
Versión de ROM: SlimLP+
Tu operador: Yoigo
Mencionado: 6 comentarios
Tagged: 2 hilos
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
Responder Con Cita
  #11  
Viejo 30/04/15, 17:33:30
Avatar de MorSerNa
MorSerNa MorSerNa no está en línea
Miembro del foro
Mensajes: 478
 
Fecha de registro: feb 2015
Mensajes: 478
Modelo de smartphone: Huawei G510
Versión de ROM: SlimLP+
Tu operador: Yoigo
Mencionado: 6 comentarios
Tagged: 2 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
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.
Como que 7 objetos Socket?
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 19:16:17 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007