"[Errno 9] Bad file descriptor" 的套接字错误可能的原因是什么?

10

我有一个复杂的Python (2.7.3) 脚本,它试图通过 Socket 连接打开连接。

self.socket.close()
# doing something else
self.socket.connect((host, port))

但是我得到的只是以下套接字错误:

error: [Errno 9] Bad file descriptor

我已经手动使用nc host port验证过,host:port接受连接。那么为什么我在打开到给定端口的连接时会出现错误,而实际上它是有效的呢?

我不能也不会发布完整的脚本,因为它对这个问题来说太复杂和无关紧要了。我只想知道所有可能导致此错误的原因,以及如何检查和修复它们。


4
阅读 socket.close() 的文档。一旦你关闭它,你不能在任何操作中(包括 connect)重用它。需要使用 socket.socket 进行重新初始化。 - Thomas
1个回答

26
您需要创建一个新的套接字对象。在关闭先前的套接字和连接之前,可以使用self.socket = socket.socket()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接