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@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