Java - Crear un servidor broadcast (¿con serverSocket?)

 
Vista:

Crear un servidor broadcast (¿con serverSocket?)

Publicado por Zehdhe (2 intervenciones) el 13/08/2005 21:42:35
Como se puede hacer un servidor que escuche a varios clientes, y que si alguno hace una peticions conteste el servidor, pero hay un cliente Administrador, este cliente tambien puede hacer peticiones al servidor, y algunas de sus peticiones son para que el servidor les conteste a todos los clientes conectado.

¿Se puede utilizar la clase serverSocket? Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Crear un servidor broadcast (¿con serverSocket

Publicado por chuidiang (532 intervenciones) el 17/08/2005 16:16:08
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Utilizar thread para crear el broadcast

Publicado por Zehdhe (2 intervenciones) el 17/08/2005 18:17:11
Muchas gracias por la ayuda, chuidiang.

En efecto en Java si hay hilos, se conocen como thread; creare un nuevo hilo por cada cliente, si entiendo la manera en como lo describes, de hecho teóricamente así se resuelve el problema, ahora me peleare un poco programando (Como bien lo dices, es mas lio pero es mejor, hojala pueda solucionarlo).

De todos modos cualquier ayuda con código es bienvenida, Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar