Guenas.
Lo que necesitara menos cambios es que hagas que la clase GestorCliente implemente Runnable y la llamada a dialogoCliente() la pongas dentro del run().
No tendras mas que crear un thread con tu GestorCliente y arrancarlo.
De esta forma tu ServerSocket podra volver a aceptar otro cliente.
Salut
Guenas.
Evidentemente el close() del socket cliente deberá hacerlo tu clase GestorCliente
Salut
Hola este codigo es para un socket para comunicarse entre dos pcs como un chat. Mi pregunta es, ya que funciona como cliente servidor, cómo hacer que acepte más de un cliente, es decir, hacerlo multihilo?
import java.net.ServerSocket;
import java.net.Socket;
/**
* Clase que implementa el servidor de diccionarios.
* Abre un socket de servidor y queda a la escucha.
* La mayor parte del trabajo se delega en un obejto GestorCliente
* que se encarga del diálogo con los clientes
* @author rp
*/
public class ServidorDiccionario {
public static int PUERTO = 22222;
public static String DICCIONARIO_POR_DEFECTO = "general"; // Nombre del diccionario por defecto (usa el fichero "general.dic")
public static void main(String[] args) {
Diccionario diccionarioGeneral = new Diccionario(DICCIONARIO_POR_DEFECTO);
diccionarioGeneral.cargar(); // Cargar contenido del diccionario
Socket conexionCliente; // Socket con la conexión al cliente
GestorCliente gestor; // Objeto al que se delega la gestión del diálogo con el cliente
try {
System.out.println("SERVIDOR. creando socket de escucha en puerto " + ServidorDiccionario.PUERTO);
ServerSocket conexion = new ServerSocket(ServidorDiccionario.PUERTO)…
while (true) { // Bucle aceptando conexiones
System.out.print("SERVIDOR. esperando conexion ... ");
conexionCliente = conexion.accept(); // El objeto de tipo ServerSocket acepta la conexion una vez identifica datos de // llegada en el puerto de escucha. El metodo accept() devuelve un objeto de tipo // socket (es decir, la conexion TCP con el cliente) y deja el canal de comunicacion // BLOQUEADO!!!
System.out.println(" cliente conectado");
// Crea un "gestorCliente" que procesara las peticiones del cliente
gestor = new GestorCliente(conexionCliente, diccionarioGeneral);
gestor.dialogoCliente();
// Fin conexion
conexionCliente.close();
}
} catch (Exception e) {
System.err.println("ERROR en conexion del servidor.");
System.err.println(e.getMessage());
System.exit(0);
}
}
} // Fin clase ServidorDiccionario