获取Errno 9:python套接字中的文件描述符错误

时间:2013-04-11 20:13:24

标签: python sockets

我的代码是:

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"

2 个答案:

答案 0 :(得分:48)

您正在关闭的同一个套接字上调用connect。你不能这样做。

至于close的{​​{3}}说:

  

套接字对象的所有未来操作都将失败。

只需将s = socket.socket()(或您拥有的任何内容)移动到循环中即可。 (或者,如果您愿意,可以使用the docs而不是分两步执行此操作,这使得更难以出错,并且意味着您不必猜测IPv4与IPv6等。)< / p>

答案 1 :(得分:1)

我过去解决了这个问题,

你必须在连接之前做到这一点:

    s = socket(AF_INET, SOCK_STREAM)

而不是继续:

    s.connect((mcip, port))
    s.send(magic)
    data = s.recv(1024)
    s.close()
    print dat