2013-04-11 20 views
16

Il mio codice è questo:Ottenere Errno 9: Bad file descriptor in presa pitone

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) 

Funziona benissimo alla prima esecuzione, ma mi Errno 9 dà ogni volta dopo. Che cosa sto facendo di sbagliato?

BTW,

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

Cosa fare magia, mcip e porta significano? Si prega di inviare il codice completo su www.pastebin.com – xxmbabanexx

+0

Aggiunto per voi –

risposta

31

si sta chiamando connect sullo stesso socket è stata chiusa. Non puoi farlo.

Per quanto riguarda the docs per close dicono:

tutte le future operazioni sul oggetto socket falliranno.

Basta spostare il s = socket.socket() (o qualsiasi altra cosa tu abbia) nel loop. (Oppure, se preferisci, usa create_connection invece di farlo in due passaggi, il che rende più difficile sbagliare, oltre a non dover indovinare IPv4 o IPv6, ecc.)

+0

Awesomeee. Grazie! –

Problemi correlati