Sobrecarga del sistema con sockets

Jes?
13 de Febrero del 2006
Hola.
He creado un servidor que abre ServerSocket y que acepta múltiples clientes(sockets) asignando a cada conexión un nuevo subproceso (thread). El servidor periódicamente mediante un temporizador les envía a cada conexión la fecha del sistema.

Pero....
Si hay 300 conexiones, tendré 300 sockets abiertos que corresponden a los clientes.

Demasiada sobrecarga del sistema....

¿Existe alguna técnica para evitar tener tantos sockets abiertos?

Gracias y saludos.

chuidiang
13 de Febrero del 2006
Hola:

Una opción es que sean los clientes cuando necesiten la hora que abran la conexion, la pidan, esperen respuesta y la cierren.

Otra opción (aunque no te puedo dar detalles) es usar udp. UDP es una variante de los sockets, pero no es necesaria conexion. El servidor simplemente está a la escucha de que le llegue el mensaje, pero de cualquier ordenador en red. El cliente envia el mensaje al servidor (sin establecer conexion) y el servidor le contesta. De hecho, en unix hay un servicio estandard del sistema que hace lo que tu quieres de la fecha hora, pero lo hace por peticion del cliente y lo hace por udp.

No puedo darte detalles de udp en java (no lo he usado nunca), pero tienes un ejemplo de udp en C en http://www.geocities.com/chuidiang/sockets/udp/udp.html

Se bueno.