Por lo que leí sobre SocketChannels de Java NIO y no-blocking [Servidor], debería ser posible escribir un servidor TCP que sostenga varias conexiones usando solo un hilo - Haría un Selector que esperara todos los canales relevantes en el el bucle del servidor.Sockets Java: ¿puedo escribir un servidor TCP con un hilo?
¿Es correcto o me falta algún detalle importante? ¿Qué problemas puedo enfrentar?
(Antecedentes:.. La comunicación TCP sería para un pequeño juego de varios jugadores, por lo max 10-20 conexiones simultáneas Los mensajes se enviarán aproximadamente cada pocos segundos.)
Bueno ... parece muy familiar para la programación de swing ... donde tiene un hilo de envío de evento principal, pero en el caso del servidor, el nombre es más bien "Solicitar envío de hilo". Y también está la buena práctica de delegar a otros el hilo de esos eventos/requets que requieren algún procesamiento que podría tomar más de un segundo para liberar el hilo de sondeo. ¿Tiene sentido chicos o simplemente estoy diciendo nueces? – Victor
Sí, lo que dices tiene sentido. Lo que describes es típico para los procesadores de eventos. La solicitud se maneja como un evento, y el canal en el que los datos están disponibles o en los que se escribirá se maneja con un hilo diferente al del aceptador. Tenga en cuenta que con el modelo de E/S original a menudo se supone que un servidor genera un nuevo hilo por cliente, pero este modelo basado en eventos con un número fijo de hilos es igualmente útil. – Pindatjuh