Construye un servidor HTTP. ¿Por qué? Protocolo fácil, bien conocido, interesante para los estudiantes.
Haga esto de forma incremental:
1) Servidor básico: proceso único, subproceso único, una conexión por subproceso (bloqueo de E / S)
2) Procesamiento múltiple
- ¿El sistema educativo en los Estados Unidos todavía enfoca su atención en las habilidades para la revolución industrial inevitable?
- ¿Cuál es el futuro de compartir contenido educativo digital?
- ¿Existe una conexión entre una mayor inteligencia / educación y pérdida de cabello?
- ¿Cuáles son las formas en que el sexismo sigue siendo evidente entre las personas bien educadas?
- ¿Es tan importante la postura corporal al leer?
2.1) Introducción simple: admite scripts CGI
2.2) Bifurcación en cada solicitud (costosa) para concurrencia
2.3) Pre-fork (presenta Unix IPC: envío de descriptores de archivo a los procesos del controlador)
3) Proceso único, impulsado por eventos. Múltiples procesos para múltiples loops de eventos. Use una encuesta escalable para esto (ya sea nativamente llame a epoll / kqueue o use libevent2)
4) Subprocesamiento múltiple: cree un grupo de subprocesos (presenta el búfer acotado o el problema “productor / consumidor”), maneje las tareas en un grupo de subprocesos
5) Proyectos avanzados (podría traducirse bien en un proyecto de diseño senior)
a) Construya una arquitectura de tipo SEDA (evento controlado * y * multiproceso, con grupos de subprocesos en cada etapa de la canalización). El OKWS de Afaik OkCupid es un ejemplo de esto basado en C ++ (también existe la implementación Java original de Matt Welsh)
b) Soporte integrado en complementos y lenguajes de secuencias de comandos (que le enseñan vinculadores, cargadores, otros idiomas)
c) Admite encuestas largas (requiere # 3), crea una aplicación de chat
Si encuentra que HTTP es demasiado complejo, SMTP puede ser otra opción (protocolo más simple)