Sobrecarga del sistema con sockets
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.
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.
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.
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.