Solo te falta aplicar esto:
Para poder eliminar clientes, deberas pasar el servidor al constructor de ClienteEscucha y cuando este termine de ejecutar el run() hacer una llamada para eliminarlo de la lista.
Para enviar los mensajes bastara un metodo que recorra la lista de ClienteEscucha y llame un metodo de este que escriba un mensaje.
Te lo pongo sobre lo tuyo. Revisalo porque lo he puesto aqui directamente y lo mismo hay algo que no compila:
Código Java:
Ver originalpublic class MultiEchoServer
{
private static final int Puerto = 1121;
private List<ClienteEscucha> listaclientes = new ArrayList<ClienteEscucha>();
MultiEchoServer server = new MultiEchoServer();
System.
out.
println("No se puede establecer conexion con el puerto!\n"); }
do{
//En espera de un nuevo cliente
Socket cliente
= ServidorSocket.
accept();
System.
out.
println("Nuevo cliente aceptado.\n");
ClienteEscucha escucha = new ClienteEscucha(cliente, server);
escucha.start();
server.addClient(escucha );
}while (true);
}
public void addClient(ClienteEscucha clienteEscucha) {
listaclientes.add(clienteEscucha);
}
public void removeClient(ClienteEscucha clienteEscucha) {
listaclientes.remove(clienteEscucha);
}
//Este metodo lo llamas cuando quieras enviar un mensaje a todos
public void sendToAnyone
(String message
) {
for (ClienteEscucha connection : listaclientes) {
connection.sendMessage(message);
}
}
}
class ClienteEscucha
extends Thread{ private MultiEchoServer server;
public ClienteEscucha
(Socket socket, MultiEchoServer server
){ cliente = socket;
this.server = server;
try{
salida
= new PrintWriter(cliente.
getOutputStream(),
true); }
e.printStackTrace();
}
}
public void run()
{
try{
do{
recibido = entrada.readLine();
salida.println(recibido);
}while (!recibido.equals("QUITAR"));
}
e.printStackTrace();
}
finally{
try{
if (cliente!=null){
System.
out.
println("Cerrando la conexion del servidor...\n"); cliente.close();
}
server.removeClient(this);
}
e.printStackTrace();
}
}
}
protected void sendMessage
(String message
) { salida.println(message);
}
}
Creo que esta todo.
Un saludo