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
import java.lang.*; import java.io.*; import java.net.*; { public static int puerto; //Clase para hablar { //CONSTRUCTOR DE HILO para hablar public void run() { try{ salidaServidor.writeUTF(InterfazDelChat.fieldMensaje.getText()); InterfazDelChat.areaChat.append("\nError al ENVIAR el mensaje.\n");} } } //Clase para escuchar { //CONSTRUCTOR DE HILO para escuchar public void run() { try{ entradaServidor = new BufferedReader(new InputStreamReader(socketConexion.getInputStream())); //Coge el InputStream, lo pone en un lector y el resultado en un búffer. InterfazDelChat.areaChat.append("\nLa otra persona dice...\n" + entradaServidor.readLine() + "\n"); InterfazDelChat.areaChat.append("\nError al RECIBIR el mensaje.\n");} } } //Clase para conectar { //CONSTRUCTOR DE HILO para conectar public void run() { try{ socketConexion = socketServidor.accept(); //Aquí espera a que alguien haga la petición. La petición se inicia en el envío del primer mensaje. InterfazDelChat.fieldDireccionLocal.setText("" + socketConexion.getLocalSocketAddress()); InterfazDelChat.fieldDireccionRemota.setText("" + socketConexion.getRemoteSocketAddress()); InterfazDelChat.fieldAyuda.setText("Conectado."); } } } //Clase para desconectar { //CONSTRUCTOR DE HILO para desconectar public void run() { try{ socketConexion.close(); entradaServidor.close(); salidaServidor.close(); } } } //CONSTRUCTOR public ServidorDelChat() { (new ConectarDesdeServidor()).run(); (new EscucharDesdeServidor()).run(); } }
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!