gpt4 book ai didi

Python 套接字选择.选择。使用对象列表而不是连接

转载 作者:行者123 更新时间:2023-12-03 09:14:00 25 4
gpt4 key购买 nike

通常使用select.select()需要一个连接对象列表才能像这样工作:

读取、写入、错误 = select(self.all_connections, [], [], 0.1)

假设我有以下对象:

class remoteDevice(object)

def __init___(self, connection):
self.connection = connection

在接受连接后使用 select 之前,我将创建一个远程设备列表,并将它们附加到列表中:

conn  = socket.accept()
newDevice = remoteDevice(conn)
all_devices.append(newDevice)

现在all_devices将是多个设备的列表,并且它们的连接对象被赋予每个远程设备。

有没有办法可以将 all_devices 传递到 select 语句中,以迭代每个 remoteDevice 对象的 connection 属性?我是否必须单独存储连接对象才能使用 select.select()

最佳答案

根据select.select()在文档中,您可以提供一系列具有 fileno() 方法的对象。您可以轻松地将该方法添加到您的类中:

class RemoteDevice(object):
def __init__(self, connection):
self.connection = connection

def fileno(self):
return self.connection[0].fileno()

fileno() 方法仅返回连接套接字对象的文件描述符。由于您使用 socket.accept() 的返回值实例化 RemoteDevice,因此这是一个元组,其中第一项是 socket 对象。

关于Python 套接字选择.选择。使用对象列表而不是连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39327333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com