Título: SocketServer y compañeros Publicado por: ChicoTolerante en 24 Febrero 2013, 17:57 pm ¡Hola buenas!
Agradecería un montón (y parte del otro) si me pudieran tender una mano con un problemilla de sockets. Estoy ideando un chat, pero ocurre que lo consigo abrir, consigue recibir UN mensaje, pero no controlo suficiente con los threads (si es que es ahí donde está la clave) como para mantener la comunicación abierta entre cliente y servidor y poder prolongar la conversación. Antaño me funcionó, pero ahora que lo estoy haciendo más "limpio", no recuerdo cómo... El código que tengo es el siguiente: Código
He probado introduciendo bucles en la clase para conectar y en la clase para hablar, pero no hay manera... no se me ocurre nada. Cualquier consejo será de gran ayuda. ¡Gracias, sois muy cracks! ;) Título: Re: SocketServer y compañeros Publicado por: ChicoTolerante en 24 Febrero 2013, 18:10 pm Breve explicación para entender mejor el código:
1. Todos los "System.out.println(*);" en realidad sobran, lo que pasa que los utilizo para ir siguiendo el programa, por donde va pasando, e ir quedándome con ciertos valores para ir entendiéndolo mejor. 2. La idea general es crear 4 clases diferentes: - ConectarDesdeServidor: para conectar con el cliente. - HablarDesdeServidor: para hablar con el cliente. - EscucharDesdeServidor: para escuchar al cliente. - DesconectarDesdeServidor: para desconectar las conexiones, o por lo menos la del cliente. 3. Esto lo hago para poder usar con más libertad los Threads. Por eso cada una de estas clases cumple una función y todas derivan de la clase Thread de Java, para poder usarlas como hilos. 4. No sé bien bien cómo podría hacerlo para que haya una escucha y una posibilidad de hablar al mismo tiempo (eso sí, con "synchronized), pero de una manera CONTINUADA, y no sólo espontánea (ahora consigo que se envíe y se reciba un mensaje, pero nada más...) Título: Re: SocketServer y compañeros Publicado por: ChicoTolerante en 24 Febrero 2013, 22:04 pm Reformularé la pregunta, porque creo que es leer código innecesariamente:
¿Cómo puedo hacer para abrir una conexión entre un socket servidor y otro cliente y dejarla abierta para que se puedan enviar mensajes entre sí? Gracias, y perdón por no haber sido más conciso. Título: Re: SocketServer y compañeros Publicado por: ChicoTolerante en 27 Febrero 2013, 01:31 am Respuesta:
No hay ningún problema. Desde el momento en que acepta, un socket nuevo es creado para seguir escuchando a otros clientes, pero el primero se mantiene abierto en el puerto ServerSocket.getLocalPort(). Así que el problema debe ser otro... y ello debería ir en otro post. En concreto, es un problema de actualizar el JTextArea donde debería aparecer el mensaje nada más entrar la info del DataInputStream. Pero lo comento en otro post. Gracias y disculpen!! |