Har*_*vey 2 python sockets python-3.x
通常使用select.select()需要一个连接对象列表才能像这样工作:
read, write, error = select(self.all_connections, [], [], 0.1)
假设我有以下对象:
class remoteDevice(object)
def __init___(self, connection):
self.connection = connection
Run Code Online (Sandbox Code Playgroud)
我将在接受连接后使用 select 之前创建一个远程设备列表,并将它们附加到列表中:
conn = socket.accept()
newDevice = remoteDevice(conn)
all_devices.append(newDevice)
Run Code Online (Sandbox Code Playgroud)
现在all_devices将是多个设备的列表,并且它们的连接对象被赋予每个远程设备。
有没有办法可以传入all_devicesselect 语句来迭代connection每个remoteDevice对象的属性?我是否必须单独存储连接对象才能使用select.select()?
根据select.select()文档,您可以提供一系列具有fileno()方法的对象。您可以轻松地将该方法添加到您的类中:
class RemoteDevice(object):
def __init__(self, connection):
self.connection = connection
def fileno(self):
return self.connection[0].fileno()
Run Code Online (Sandbox Code Playgroud)
该fileno()方法只是返回连接的套接字对象的文件描述符。由于您RemoteDevice使用 的返回值进行实例化socket.accept(),因此这是一个其中第一项是socket对象的元组。
| 归档时间: |
|
| 查看次数: |
1583 次 |
| 最近记录: |