[C con Clase] Duda con sockets

Matias V. fockewulffw44j en gmail.com
Jue Jun 4 04:26:56 CEST 2009


Gracias por las respuestas, me han sido de utilidad.

Saludos.

El 2 de junio de 2009 22:33, Programante <programante en gmail.com> escribió:

> Matias V. escribió:
> > Hola, estoy empezandoa programar sockets y necesitaria aclarar una
> > duda sobre la ejecucion de un programa que hace uso de los mismos.
> >
> > El siguiente es el codigo de un servidor que solamente envia la cadena
> > "Prueba socket" (es un ejemplo modificado de uno que aparece en la
> > guia beej):
> >
> >
> ..................................................................................................................................................................................................................................
> >
> >
> > El programa se compila y funciona sin problemas.Lo que no entiendo es
> > como se va ejecuntando el codigo. Hasta donde entiendo primero se crea
> > un socket usando la función socket() , luego se asocia dicho socket a
> > un puerto y una dirección usando bind(), y luego se ejecuta la función
> > listen() que le indica al S.O. que se quede fijando si hay conexiones
> > entrantes.Es decir (esta sería la duda) que cuando se ejecuta listen()
> > ¿el programa detiene su ejecución en ese punto y se queda "esperando"
> > un pedido de conexión, y continua ejecutandose cuando lo recibe?. ¿O
> > es cuando aparece la función accept que el programa se queda esperando
> > hasta que aparesca una conexión, es decir "le pregunta" al S.O. si
> > hubo alguna conexión y en caso afirmativo la acepta o en caso negativo
> > se que esperando hasta que halla alguna ?. Pregunto esto porque miro
> > el codigo y me parece que si en listen() o accept() el programa no se
> > detuviera, este llegaria al final y terminaria ya que en el mismo no
> > hay ningun loop.
>
> Se bloquea en accept (a menos que hayas establecido previamente el
> socket como no bloqueante).
> Después de haber llamado a listen(), el sistema aceptará BACKLOG
> conexiones en una cola hasta que empiece a rechazar (normalmente
> llamarás a accept mucho antes).
> Fíjate que podrías seguir trabajando en otras cosas y vigilar con
> select() (u otro método) el momento en que hay conexiones esperando,
> momento en el cual llamarías a accept sin quedarte bloqueado (puesto que
> sabes que hay algo, no te bloquearás).
>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090604/bac1b305/attachment-0001.html>


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