| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
abc
Registrado: 23 Abr 2007 Mensajes: 1
| Publicado: 23/04/2007 2:54 am | | | Título: sockets: mensajes que se pierden |
| Hola!
Tengo una aplicación de chat con un servidor escrito en C y un cliente Java que se comunican mediante sockets. En general, todo funciona bastante bien, salvo en el siguiente caso: Cuando uno de los clientes envía muchos mensajes cortos muy rápidamente a los demás clientes no les llegan todos los mensajes.
He realizado trazas y el servidor indica que está enviando los mensajes sin problemas, pero en el cliente no hay ni rastro de ellos.
¿A qué puede deberse? ¿Puede ocurrir que si el servidor escribe varias veces en un socket sin que el cliente tenga tiempo a ir leyendo los mensajes, éstos se machaquen unos a otros?
Muchas gracias de antemano. |
| | Volver arriba | |  | Diabliyo
Registrado: 14 Abr 2004 Mensajes: 317 Ubicación: En la Luna
| Publicado: 18/05/2007 12:48 pm | | | Título: |
| Hola:
Entonces no estan llegando :S !!...
Basicamente si utilizas en envio de informacion a los sockets de forma DIRECTA, el mensaje llega y es mostrado...
Si utilizas un modo de envio paralelo (hilos), debes poner un medidor MUTEX para que entre hilos se esperen y escriban un por uno, ya que si se llega escribir al mismo tiempo, esto puede resultar un error de datos !!
Nose como lo manejes... Ya que peudes usarlo asi:
1- El hilo pone los datos en el sockets de cada cliente 2- Otro hilo lee datos de cada cliente 3- en el punto 1 y 2 existe un conflicto, ya que si uno envia mensaje y se desea que tambien reciva, ya estarian 2 hilos posicionados en ese mismo sockets, y aqui entra el conflicto de que no abra coherencia de datos cuando el ULTIMO intente leer/escribir en el socket... utiliza un MUTEX para que un hilo espere a que le toque su turno de leer/escribir !!
Ahi otras formas, pero nose cual uses :S
bye bye _________________
|
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |