Foros del Web » Programación para mayores de 30 ;) » Java »

Recibir datos por socket constantemente

Estas en el tema de Recibir datos por socket constantemente en el foro de Java en Foros del Web. Hola a todos! Estoy diseñando un programa en java (Eclipse) Donde un socket envía y recibe datos y sé como enviarlos y recibirlos. El problema ...
  #1 (permalink)  
Antiguo 30/06/2011, 21:01
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 12 años, 11 meses
Puntos: 2
Pregunta Recibir datos por socket constantemente

Hola a todos!

Estoy diseñando un programa en java (Eclipse) Donde un socket envía y recibe datos y sé como enviarlos y recibirlos.
El problema esque necesito que el programa se quede por decirlo así en "standby" esperando nuevos datos para ser recibidos y procesados, pero con mi código el programa sólo recibe los datos una vez, y no vuelve a recibir nada más...
He visto en algunas páginas ejemplos donde dejan al programa recibiendo datos con un while, pero yo lo he intentado y el programa se cuelga...

Dejo el código para que vean de que se trata:

try
{
OutputMEssage = new DataOutputStream(sckBot.getOutputStream());
OutputMEssage.writeBytes(Envio);
System.out.println(Envio);
OutputMEssage.flush();
InputMEssage = new DataInputStream(sckBot.getInputStream());
}
catch(IOException e)
{
System.exit(1);
}

try
{
IncomingMSG = new BufferedReader(new InputStreamReader(sckBot.getInputStream()));
Incoming = IncomingMSG.readLine();
Ventana.InputMSG = Incoming;
}
catch(IOException e)
{
System.exit(1);
}

Como les digo, sólo recibe datos una vez y ahi no vuelve a recibir nada... agradezco cualquier ayuda!
  #2 (permalink)  
Antiguo 01/07/2011, 09:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Recibir datos por socket constantemente

Necesitas un bucle infinito
  #3 (permalink)  
Antiguo 01/07/2011, 16:45
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: Recibir datos por socket constantemente

Cita:
Iniciado por cucuru Ver Mensaje
Necesitas un bucle infinito
Oye como dije en toda la descripción, he visto que lo hacen con un bucle infinito, pero cuando yo hago eso, el programa si recibe los datos, pero se bloquea... que condiciones especiales debe tener ese bucle para que el programa no se bloquee? Gracias!
  #4 (permalink)  
Antiguo 02/07/2011, 10:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Recibir datos por socket constantemente

hay muchísimos ejemplos, yo misma puse uno ayer para una duda que tengo...
  #5 (permalink)  
Antiguo 02/07/2011, 10:49
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 12 años, 11 meses
Puntos: 2
Exclamación Respuesta: Recibir datos por socket constantemente

Cita:
Iniciado por cucuru Ver Mensaje
hay muchísimos ejemplos, yo misma puse uno ayer para una duda que tengo...
Te agradecería el link!
  #6 (permalink)  
Antiguo 02/07/2011, 13:54
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 12 años, 11 meses
Puntos: 2
Pregunta Respuesta: Recibir datos por socket constantemente

Cita:
Iniciado por cucuru Ver Mensaje
hay muchísimos ejemplos, yo misma puse uno ayer para una duda que tengo...
Oye Cucuru, gracias por toda la yuda que me has dado y todo... intenté hacerlo con hilos y funciona, pero tiene un problema... a veces los paquetes no llegan en su momento, sino que llegan revueltos...como varios paquetes en un sólo, y esto causa que la interpretacion del protocolo con el que me estoy conectando no se de... es como si el thread me diera los datos pero todos juntos, y a destiempo... sabes a que se puede deber?
  #7 (permalink)  
Antiguo 02/07/2011, 15:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Recibir datos por socket constantemente

eso es porque lees todos los datos de una. si estás esperando leer 20 bytes, el primer paquete lleva 5, el segundo10 y el tercero 5 hasta que no recibe el tercero no muestra nada.

lo más facil es usar wireshark para ver los paquetes, intentalo, lo verás todo mucho más claro
  #8 (permalink)  
Antiguo 02/07/2011, 17:21
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 12 años, 11 meses
Puntos: 2
De acuerdo Respuesta: Recibir datos por socket constantemente

Cita:
Iniciado por cucuru Ver Mensaje
eso es porque lees todos los datos de una. si estás esperando leer 20 bytes, el primer paquete lleva 5, el segundo10 y el tercero 5 hasta que no recibe el tercero no muestra nada.

lo más facil es usar wireshark para ver los paquetes, intentalo, lo verás todo mucho más claro
Bueno, eso de que espero un numero definido de bytes para leer no lo sabía... lo cual me pone nuevos interrogantes, porque la cantiadd de bytes que espero es totalmente variable... como puedo hacer para que me devuelva los paquetes tal cual llegan al instante, sin importar su tamaño?
Qué pena molestarte tanto Cucuru, pero no tengo alternativa!!
  #9 (permalink)  
Antiguo 03/07/2011, 03:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Recibir datos por socket constantemente

hay muchisima información de lo que preguntas en internet.

la forma más común de hacerlo es usar writeUTF/readUTF (lee la información que hay muchísima, si te digo yo lo que hace no te ayudo nada), otra forma es enviar el tamaño al principio.

pero como te digo, busca en internet, hay mucha información, el código que buscas es muy fácil por la gran cantidad de ejemplos que hay...

lo siento pero no veo bien ayudarte más... está claro que no buscas...

Etiquetas: paquetes, recibir, socket
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.