[Python-es] duda sobre sockets en python 2.5 y 3.2

Rodrigo Mayorga Vallejos rmayorgav en gmail.com
Lun Sep 26 21:59:22 CEST 2011


Miguel.

En Python 3.2 el método recv() del objeto socket devuelve un objeto 
"bytes" 
(http://docs.python.org/py3k/library/socket.html#socket.socket.recv). Ya 
no devuelve un objeto "str". Así que, como decimos en Chile, estas 
comparando "peras con manzanas".

Para Python 3.2 sería correcto esto:

if recibido == b"quit":

Pero esta línea no funcionaría en Python 2.5 ya que no existe el objeto 
bytes.
Si quieres hacer tu código 2.x y 3.x tendrás que hacer ajustes.

Saludos.

On 26/09/2011 12:39 PM, Miguel Barraza wrote:
> hola, aqui probando y probando llegué a una duda muy estraña.
> este código de servidor de sockets lo probé con python 2.5 portable y 
> funciona correctamente, lo probé en otra pc con python 2.4 y tube el 
> mismo resultado, pero en mi pc con python 3.2 no funciona, se cierra 
> automaticamente el interprete y no se porque no me lo quiere correr, 
> la sintacsis cambia para python 3.2?. o porque podría ocurrir este 
> problema.
> aclaro: utilizo windows xp con python 3.2 instalado, y para pruebas 
> tengo el python 2.5 portable.
> código del ejemplo:
> import socket
>
> s = socket.socket()
> s.bind(("localhost", 9999))
> s.listen(1)
>
> sc, addr = s.accept()
>
> while True:
>       recibido = sc.recv(1024)
>       if recibido == "quit":
>          break
>       print "Recibido:", recibido
>       sc.send(recibido)
>
> print "adios"
>
> sc.close()
> s.close()
> fin del código.
> gracias, saludos.
> atte, Miguel
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ:http://python-es-faq.wikidot.com/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110926/402c3fd2/attachment.html>


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