[Python-es] Cerrando sockets, close_wait

Oswaldo Hernández listas en soft-com.es
Mar Mayo 22 17:59:09 CEST 2007


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,

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************



Más información sobre la lista de distribución Python-es