hola ch3m4
hice algunas pruebas
agrege el "shutdown" en mi cliente antes de "close"
no hay diferencia

me di cuenta k "socket_cliente.recv(4) "
el "4" es el numero de bytes, pensé k era de bits
cambie el largo de la cadena
la longitud no importa, mayor o menor; mismo problema

cambiar el timeout me dio una pista
ni mi server (server = socket.socket(socket.AF_INET, socket.SOCK_STREAM))
o mi socket_cliente (socket_cliente, datos_cliente = server.accept())
ni mi programa de envio (s = socket.socket(socket.AF_INET, socket.SOCK_STREAM))
ninguno tiene un atributo llamado .timeout()
me imprime un error con cada uno
solo si llamo socket.timeout() funciona. pero asi no le estoy dando el dato a 
los objetos con lo que estoy trabajando

pero paso algo interesante. incluso la impresion de errores necesita k ocurra 
algún evento.
y si hago "print mensaje,"mensaje recibido" "
primero imprime la variable mensaje y unos eventos después la cadena "mensaje 
recibido" y mas eventos después se actualiza la ventana

parece k el problema es k el hilo no se ejecuta libremente. se queda esperando 
una oportunidad de ejecutarse o algo así
es muy raro
luego investigare mas sobre hilos y otras formas de iniciar un nuevo hilo

gracias por responder


> Date: Tue, 28 Aug 2012 10:00:21 +0200
> From: pych...@gmail.com
> To: python-es@python.org
> Subject: Re: [Python-es] raro problema con hilos
> 
> El día 28 de agosto de 2012 00:56, xiao xiong mao panda rojo
> <ailurus.fulg...@hotmail.com> escribió:
> 
> > eso es solo el tiempo antes de que comience a escuchar
> > igual sin esa linea me da el mismo resultado
> > no importa el tiempo k espera
> > solo aparece el texto después de ejecutar algunos otros eventos
> 
> Vale. Entonces intenta determinar mejor dónde falla:
> 
> - ¿El servidor recibe los datos o es un problema de actualización de la 
> ventana?
> 
> - ¿Afecta el tamaño del buffer en la recepción? ¿Qué pasa si no hay
> buffer? ¿Qué pasa si el mensaje tiene mayor longitud que el buffer?
> 
> - ¿Afecta en algo si cambias el timeout (socket.timeout(value))?
> 
> - ¿Qué pasa si fuerzas al cierre inmediato del socket con shutdown
> antes de hacer close?
> 
> 
> Prueba primero con la última pregunta. Según la documentación, un
> .close() no significa que se cierre inmediatamente el socket. Tal como
> lo has programado, el servidor no sabe cuándo ha terminado el cliente
> de enviar el mensaje hasta que se cierra el socket por timeout.
> 
> 
> -- 
> Hyperreals *R: http://ch3m4.org/blog
> Quarks, bits y otras criaturas infinitesimales
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
                                          
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a