[Python-es] tomar valor de retorno en soket

Òscar Vilaplana hi en oscarvilaplana.cat
Sab Mayo 12 20:40:57 CEST 2012


2012/5/12 mauricio rodriguez <rodriguez.mauricio55 en gmail.com>:
> Hola tod en s:
>
> Estoy comenzando a trabajar con socket, y tengo un problema al tomar el
> valor de retorno del servidor
>
> Tengo un cliente y un servidor y funcionan bien, los tome de un ejemplo de
> una web y modifique un poco.
>
> El problema es que quiero obtener desde fuera de la calse el
> string recibido por el servidor y no se hacerlo.
> Hasta el momento el servidor imprime el mensaje enviado pero yo quiero poder
> manipular fuera de la calse
> el dichoso mensaje.
>
> He intentado con return pero no he podido lograr que se  comporte como
> deseo.. en fin mi poca experiencia
> me muestra mis limitaciones .....

Cada instancia de ChatRecib se ejecuta en un thread diferente (mírate
la documentación de ThreadingMixIn). Si pasar información entre
threads podrías usar una estructura que sea thread safe, como dict o
Queue.

datos = Queue()

class ChatRecib(...):
   ...
   datos.put("cosa")


Dicho esto, te recomiendo que leas la documentación sobre threads en python.

Por otro lado, quizá te sería más sencillo usar un solo thread, por
ejemplo usando tornado (http://tornadoweb.org/). Por un lado es muy
sencillo de empezar a usar. Por otro lado, es un servidor web, así que
si quieres mandar datos sin usar HTTP es más complicado.


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