Получение Errno 9: Плохой дескриптор файла в сокете python

Мой код:

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 каждый раз после. Что я делаю неправильно?

Кстати,

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

Ответы

Ответ 1

Вы вызываете connect в тот же сокет, который вы закрыли. Вы не можете этого сделать.

Что касается docs для close сказать:

Все будущие операции над объектом сокета не удастся.

Просто переместите s = socket.socket() (или все, что у вас есть) в цикл. (Или, если хотите, используйте create_connection вместо того, чтобы делать это в два этапа, что усложняет задачу, а также значение вам не нужно угадывать IPv4 против IPv6 и т.д.)