gpt4 book ai didi

c++ - 消息队列C++配合Qt进行网络传输

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:48 44 4
gpt4 key购买 nike

我正在为服务器为文件复制发送的网络消息编写一个新的消息队列。

从套接字读取定义数量的字节后,我会发出一个信号来解释 header ,如果无法解释它,请再读一些并再次发出信号,直到有已知类型。

解释 header 后,我必须向相应的工作人员(类)发出调用以解码消息的其余部分。

我的问题是,使用设计模式会更好吗?如果是的话,最好的方法是什么?还是我应该用旧方法用开关来做?

我正在使用 Qt 4.8.5,它应该适用于所有系统 (Win/Mac/Linux)。

最佳答案

如果您事先知道所有 header 类型,那么您可以使用 QHash存储所有消息解析器,映射到消息头类型。

因此,您需要一个枚举来定义所有消息 header 类型和一个用于所有消息解析器的基类。你最终会得到:

QHash<MessageType, AbstractMessageParser*> mappings;

然后您可以使用一行代码检索与特定 header 类型对应的解析器。当然,所有解析器都需要在实际解析之前在哈希中注册。我会在您的程序的初始化阶段执行此操作。

所以,没有特定的模式。我想你可以使用工厂模式,但你最终还是会遇到一个大屁股开关。

您可以将其视为 Factory pattern 的变体或 Service Locator 的变体模式。

关于c++ - 消息队列C++配合Qt进行网络传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032093/

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