[Python-es] Cerrando sockets, close_wait
dvilla en gmx.net
dvilla en gmx.net
Mar Mayo 22 18:36:38 CEST 2007
El Tue, 22 May 2007 17:59:09 +0200
Oswaldo Hernández <listas en soft-com.es> escribió:
> dvilla en gmx.net escribió:
> > El Tue, 22 May 2007 16:58:22 +0200
> > Oswaldo Hernández <listas en soft-com.es> escribió:
> >
> >> dvilla en gmx.net escribió:
> >>> Hola:
> >>>
> >>> socket.recv(n) devuelve como mucho n bytes, pero puede devolver
> >>> menos.
> >>>
> >>> Si no hay datos disponibles para leer, pero la conexión sigue
> >>> activa recv() bloquea. Pero si recv() devuelve '', es decir,
> >>> cadena vacía, significa que el otro extremo de la conexión cerró
> >>> el socket, al menos para escritura. No hace falta usar select()
> >>> para esto, al menos con sockets bloqueantes (que lo son por
> >>> defecto).
> >>>
> >> Si, pero me gustaria utilizar sockets no bloqueantes, entonces el
> >> recv puede devolver cero bytes al llegar el timeout.
> >
> > ¿Por qué quieres usar sockets no bloqueantes? Suelen traer muchos
> > más problemas que ventajas.
> >
>
> Debido a que utilizo mi propio protocolo entre el cliente y servidor
> me interesa que no bloqueen, otro motivo es el que detalla el link
> que me indicas en el apartado 'Cuando los sockets mueren'.
>
>
>
> >> Lo que desearia es poder comprobar el estado del socket antes de
> >> realizar la lectura. No encuentro ninguna funcion especifica para
> >> esto.
> >
> > Mira
> > http://wiki.python.org/moin/HowTo/Sockets?highlight=%28socket%29
>
>
> Saludos,
>
Pues como habrás visto, si necesitas sockets no bloqueantes, no te
quedan muchas opciones a parte de select() o poll()
Saludos
Más información sobre la lista de distribución Python-es