当前位置: 首页 > 面试题库 >

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

丘飞
2023-03-14
问题内容

我的代码是这样的:

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"

问题答案:

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

至于该文档的close说:

套接字对象上所有以后的操作都将失败。

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



 类似资料:
  • 问题内容: 尝试附加到go例程中的日志文件时,我得到了错误的文件描述符。 该文件存在,并且具有666的权限。起初我想很好,也许是因为他们每个人都试图同时打开文件。我实现了一个互斥体来尝试避免这种情况,但是遇到了同样的问题,因此我将其删除。 问题答案: 您需要添加标志: 为了说明,这是Linux文档:http : //man7.org/linux/man- pages/man2/openat.2.h

  • 问题内容: 我正在尝试通过linux套接字发送一些文件描述符,但是它不起作用。我究竟做错了什么?应该如何调试这样的东西?我尝试将perror()放到所有可能的地方,但是他们声称一切正常。这是我写的: 问题答案: 史蒂文斯(etal)[UNIX®网络编程,第1卷:套接字网络API描述了在第15章 Unix域协议 (尤其是第15.7节:_传递描述_符)中的过程之间传输文件描述符的过程。对此进行完整描述

  • 我试图从与参数值相连的子域列表中执行,但得到一个错误。我不确定循环是否正常工作,第一次尝试只是不是一个有效的子域+域。或者它根本不起作用? 误差 代码 新def子校验码 新产出

  • 问题内容: 从堆栈溢出的其他帖子中应该可以正常工作 但由于某种原因,它只是挂在()上而从不打印。我知道对www.cnn.com的请求将对数据进行分块,但我至少应该从中读取一些信息,对吗? PS我知道这是不是做到这一点的最好办法,而且有像库和在那里,但我不能使用那些为这个项目(这是学校)。我必须使用图书馆 问题答案: 您忘记在请求行之后发送空白行: 此外,HTTP 1.1指定您应添加HTTP 1.1

  • 我试图编写套接字错误处理(确切地说是错误111-连接拒绝),但什么也没有发生。终端打印错误号111发生,但它没有做任何事情: Traceback(最近的调用为last):文件“test.py”,第20行,在s.connect((IP,PORT))中文件“/usr/lib/python2.7/socket.py”,第224行,在meth返回getattr(self._sock,name)(*args