2013-04-11 74 views
16

我的代码是这样的:获取errno的9:蟒蛇插座坏文件描述符

while 1: 
    # Determine whether the server is up or down 
    try: 
     s.connect((mcip, port)) 
     s.send(magic) 
     data = s.recv(1024) 
     s.close() 
     print data 
    except Exception, e: 
     print e 
    sleep(60) 

它工作正常,在第一次运行,但之后每次给我errno的9。我究竟做错了什么?

BTW,

mcip = "mau5ville.com" 
port = 25565 
magic = "\xFE" 
+2

什么是魔术,mcip和港口是什么意思?请在www.pastebin.com上发布完整的代码 – xxmbabanexx 2013-04-11 20:15:15

+0

为您添加它们 – 2013-04-11 20:17:30

回答

31

你关闭你在同一插座上调用connect。你不能那样做。

至于the docsclose说:

Socket对象上的所有未来的操作将失败。

只需将s = socket.socket()(或任何你有的)移动到循环中。 (或者,如果您愿意,可以使用create_connection而不是分两步进行,这会使得更难以获得错误,以及意味着您不必猜测IPv4与IPv6等。)

+0

Awesomeee。谢谢! – 2013-04-11 20:20:40