[C con Clase] Ayuda !

Emilio Astarita emilio.astarita en gmail.com
Vie Abr 17 20:59:24 CEST 2009


2009/4/17 florencia spinella <florenciaspinella en yahoo.com.ar>

> Muchas gracias, ahora voy a averiguar cómo funciona en windows el tema del
> teclado (en linux, si no me equivoco, el 0 representa stdin..o el 1). Yo
> sugerí utilizar el select( ) pero como la consigna es crear un thread de
> descarga por cada cliente conectado (el cliente es el browser mediante un "
> http://IP:port/archivoaDescargar") mis compañeros optaron por no utilizar
> dicha función (que, según leímos, era una alternativa a la creación de
> múltiples threads...un proceso "multiplexaba" todos lso pedidos) . De todas
> formas está por verse si la usamos o no, como pensabamos todos diferente le
> mandamos un mail a la ayudante. Si funciona ok esto es una excusa más para
> seguir intentando imponer esta función, jajaja. GRACIAS!
>
>
> Florencia



Podes seguir utilizando la función `select' en el flujo principal del
programa para averiguar cuando recibis una conexión en tu socket de escucha.
Cuando te encontras una conexión la aceptas (por lo que obtenes un nuevo
socket para tratar al cliente) y creas un nuevo hilo que atienda a este
socket  y se ocupe de enviar las cabeceras, archivo, etc. Mientras tanto tu
flujo/hilo principal vuelve al `select' esperando que se escriba el socket
de escucha o el descriptor de entrada estándar.
Usar `select' no es incompatible con usar hilos, aunque es Linux/Unix suele
ser más tradicional usar `select' + procesos.

Te recomiendo que leas la guía Beej y trates de conseguir el Unix Network
Programming (volumen 1) de W.R. Stevens, si bien se concentra mucho en Unix,
da un montón de ideas sobre como implementar servidores/clientes con
diferentes combinaciones de `select', llamadas bloqueantes/ no bloqueantes,
hilos, procesos etc.

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090417/bdfb7bfd/attachment.html>


Más información sobre la lista de distribución Cconclase