gpt4 book ai didi

python - 将套接字转换为子类型

转载 作者:行者123 更新时间:2023-11-30 23:57:45 25 4
gpt4 key购买 nike

我正在尝试创建自己的 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._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。现在的问题是,当然socket.accept()会返回一个socket.socket,而不是我的实现handleMessage函数的子类。

获取自定义类而不是默认的 socket.socket 的最简单方法是什么?

最佳答案

根据您的描述,您似乎正在创建一个套接字(或多个套接字)的消息处理程序。设计类时,has-a表示组合和委托(delegate),而is-a可以表示继承。

所以从socket.socket继承是不合适的,而且你的代码看起来已经有点混合了。像这样非常粗糙的伪代码可能最适合该任务:

class MyMessageHandler(object):
def __init__(self):
self.sockets = [...]

def wait(self):
debug('waiting...')
i, o, e = select(...)

关于python - 将套接字转换为子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3538619/

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