RE:Crear un servidor broadcast (¿con serverSocket
Hola:
La clase es esa.
Para atender varios clientes tienes que crear hilos. En C hay otras opciones, como el uso de la funcion select(), para evitar hilos, pero no sé si en java hay algo parecido.
Un hilo debe estar continuamente bloqueado en serverSocket.accept(), de forma que cada vez que se conecte un cliente nuevo, meta el Socket en una lista, array o algo y vuelva meterse en el serverSocket.accept().
while (1)
{
Socket nuevoCliente = serverSocket.accept();
anhadeNuevoCliente (nuevoCliente);
}
Luego, o bien tienes un hilo recorriendo todos los clientes para ver si han pedido algo y sin que se bloqueen (por ejemplo, puedes ver si hay datos disponibles con el metodo available() del InputStream que obtienes de Socket() antes de hacer un read()) o bien creas un nuevo hilo para atender a cada cliente, de forma que el hilo esté bloqueado en el read() hasta que llegue alguna petición.
La primera opción quizás es más cómoda de programar, pero es lo que se llama "espera activa" y está consumiendo cpu incluso aunque los clientes no hagan peticiones. Para evitar esto, habría que poner un sleep() que duerma a ese hilo durante un tiempo pequeño , pero eso puede meter retardos al contestar a los clientes. Es mejor no usarla.
La segunda es más lio de programar, pero es más eficiente.
Se bueno.