2013-04-11 16 views
16

Mój kod to:Pierwsze ERRNO 9: Bad deskryptor pliku w gniazdo Pythona

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) 

Działa dobrze na pierwszym biegu, ale daje mi ERRNO 9 za każdym razem po. Co ja robię źle?

BTW,

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

Co zrobić magia, mcip i port? Proszę zaksięgować pełny kod na www.pastebin.com – xxmbabanexx

+0

Dodałem je dla ciebie –

Odpowiedz

31

Dzwonisz connect tego samego gniazda zamknięciu. Nie możesz tego zrobić.

chodzi o the docs dla close powiedzieć:

Wszystkie przyszłe operacje na obiekcie gniazda zawiedzie.

Po prostu przenieś s = socket.socket() (lub cokolwiek innego) do pętli. (Lub, jeśli wolisz, używaj create_connection zamiast robić to w dwóch etapach, co sprawia, że ​​trudniej jest się pomylić, a także oznacza, że ​​nie musisz zgadywać na IPv4 vs. IPv6, itp.)

+0

Awesomeee. Dzięki! –

Powiązane problemy