Python 将套接字转换为子类型
我正在尝试创建自己的socket.socket子类,该子类将能够处理自定义消息。到目前为止,我的代码如下所示:Python 将套接字转换为子类型,python,sockets,Python,Sockets,我正在尝试创建自己的socket.socket子类,该子类将能够处理自定义消息。到目前为止,我的代码如下所示: self._sockets.append(s) logging.debug("Waiting for incoming connections on port %d" % (port)) while not self.shutdown: inputready,outputready,exceptready = select(self._socke
self._sockets.append(s)
logging.debug("Waiting for incoming connections on port %d" % (port))
while not self.shutdown:
inputready,outputready,exceptready = select(self._sockets,[],[])
print "Select returned"
for i in inputready:
if s == i:
# handle the server socket
client, address = s.accept()
self._sockets.append(client)
print "%r , %r" % (client, address)
else:
# handle all other sockets
s.handleMessage()
所以,正如您所看到的,我要么接受新的连接,要么如果它从另一个套接字返回,它将调用该套接字上的handleMessage。现在的问题是,off-course socket.accept()将返回一个socket.socket,而不是我实现handleMessage函数的子类
获取自定义类而不是默认的socket.socket的最简单方法是什么?设置将套接字描述符映射到套接字包装器对象的字典有多难?根据您的描述,您似乎正在创建一个具有一个或多个套接字的消息处理程序。设计类时,has-a表示组合和委托,而is-a可以表示继承 因此,从socket.socket继承是不合适的,而且您的代码看起来已经有点混合了。类似这样的非常粗糙的伪代码可能最适合此任务:
class MyMessageHandler(object):
def __init__(self):
self.sockets = [...]
def wait(self):
debug('waiting...')
i, o, e = select(...)
我建议您制作具有套接字的消息处理程序。不要继承,要创作。