He iniciado un tutorial básico sobre programación con sockets y concurrencia. Por ahora, en la primera entrega, se lleva a cabo del diseño de un protocolo muy simple, un servidor secuencial y un cliente del mismo. Más adelante se desarrollará un servidor concurrente y multithread. Los ejemplos están en Perl, pero el objetivo es introducir los conceptos básicos más allá del lenguaje de implementación. En esta etapa inicial me vendrían muy bien opiniones, críticas y sugerencias.
Bueno, te meneo porque esta bastante chulo... ahora a ver si te saco algun error ;)
Muchos estudiantes sufridores te lo agradecerán seguro :-)
Gracias por el manual.
www.lcc.uma.es/~jmcruz/sdc0405/bloque2%5Csockets.pdf
www.ibiblio.org/pub/Linux/docs/linux-doc-project/network-guide/translaf
panou.act.uji.es/AIC/tema4.1.4c.pdf
1. ¿Qué ocurre si el cliente no cierra la sesión? ¿Debe el servidor encargarse de cerrar las sesiones sin actividad durante un tiempo?
2. ¿Dónde se define la constante SOMAXCONN? ¿Es una constante ya prefenida por el SO o se puede cambiar?
- He tratado de no utilizar construcciones "extrañas" ni ofuscadas.
- Mas adelante trataré el tema de la concurrencia (con procesos y threads), y en Perl es realmente sencillo hacerlo.
No crean que no he evaluado qué lenguaje utilizar (pero cualquiera hubiese sido, siempre hubiera tenido varios puntos en contra).
Nuevamente, gracias por el interés y los comentarios :)
En una situación real, lo más apropiado sería que el servidor cierre las conexiones inactivas pasado un tiempo.
SOMAXCONN está definido en el SO (include/linux/socket.h)