【问题标题】:Getting Errno 9: Bad file descriptor in python socket获取 Errno 9:python 套接字中的错误文件描述符
【发布时间】:2013-04-04 04:39:00
【问题描述】:

我的代码是这样的:

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"

【问题讨论】:

    标签: python sockets


    【解决方案1】:

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

    至于the docsclose 说:

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

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

    【讨论】:

      【解决方案2】:

      我过去解决了这个问题,

      你必须在connect()之前创建套接字:

          s = socket(AF_INET, SOCK_STREAM)
      

      然后继续:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-21
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2019-03-24
        • 1970-01-01
        • 2015-09-07
        • 1970-01-01
        相关资源
        最近更新 更多