Java - servidor en java

 
Vista:

servidor en java

Publicado por harielo (3 intervenciones) el 20/12/2004 13:03:13
hola, necesito hacer un servidor en java (lo tengo hecho en vb pero necesito uno q sea multiplataforma). La aplicacion en particular es un chat.
Lo q desearia es q alguien me diga si necesitariamente debo usar "Hilos" (threads, no recuerdo si se escribe asi) para manejar el intercambio de datos entre el servidor y un cliente (usuario) en particular.
cada "Hilo de ejecucion" debe tener el mismo codigo: es decir el necesario para distinguir y "reenviar mensajes" (publicos y/o privados).

Ahora bien: un mensaje publico deberá reenviarse por todos los puertos conectados.. como implemento esto? entonces, q la resumo (sólo necesito el proceso servidor, si? ):
1) debo (necesariamente) usar "Hilos"?
2) como implemento la salida de un mismo mensaje por varios puertos?
chau y desde ya: muchas 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:servidor en java

Publicado por chuidiang (532 intervenciones) el 20/12/2004 14:36:36
El uso de hilos no es obligatorio. Siempre puedes apañarte de otras maneras.

Por ejemplo, puedes guardar todas las conexiones de clientes en un array o una lista y luego un bucle que intente leer mensajes de cada cliente, pero sin quedarse bloqueado.

Para mandar un mismo mensaje por varios puertos lo mismo, un bucle para cada conexion y envias el mensaje.

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

RE:servidor en java

Publicado por harielo (3 intervenciones) el 23/12/2004 06:11:04
hola. antes q nada : gracias por tu respuesta (escribo recien ahora porq estuve ocupado en otra cosa).
sí, entiendo tu respuesta y es lo q hice en el servidor VB. ahora bien: la "teoria" indica usar threads en java , y los servidores commserver y aquaserver utilizan hilos. Y la verdad es q no está dificil implementarlo con ese esquema, el problema (para mí) está en el reenvio 1-varios (es el caso de un "mensaje publico"). En el reenvio 1-1 (es el caso de un "mensaje privado") no hay problema porq es: puerto cliente-puerto servidor (q lo maneja el hilo correspondiente).
Entonces la pregunta sería: cómo hago para reenviar un mismo mensaje a varios destinos? (usando un esquema de threads)
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

RE:servidor en java

Publicado por chuidiang (532 intervenciones) el 23/12/2004 09:04:12
No sé cómo tienes implementado el tema.

Una posible solución es hacer dos hilos por cliente. Uno encargado de recibir mensajes del cliente y colocarlos en algún sitio de memoria (un List, un buffer o lo que sea). El otro hilo estaría pendiente de esa zona de memoria, para que cuando alguien inserte algo, reenviarlo al cliente.

De esta forma, cuando alguien meta algo en esta zona de memoria, los hilos de los clientes se enteran y les reenvian el mensaje correspondiente.

En el método run() de tus hilos de enviar mensajes, estos estarían dentro de un bucle infinito y dormidos. Cuando alguien deje un mensaje en el sitio de los mensajes, debes pensar la forma de "despertar" al hilo. Este hilo al despertar, leería el mensaje y lo reenviaría a su cliente.

Por ejemplo, si usas un DefaultListModel para guardar los mensajes, a esta clase puedes añadirle una clase que implemente ListDataListener, que es el que se entera de que se ha añadido un mensaje nuevo a la lista. Esta clase ListDataListener debe tener una lista de todos los hilos y se encargaría de "despertar" a los hilos, e incluso de pasarles el mensaje que deben enviar.

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