gpt4 book ai didi

c++ - 网络包解析类设计

转载 作者:太空狗 更新时间:2023-10-29 23:08:32 25 4
gpt4 key购买 nike

我正在寻找建议或设计模式来处理网络数据包的解析和生成(网络本身是否重要并不重要)。每个数据包都有一个固定长度的报头和一个可变长度的有效载荷。有效负载解析将取决于数据包类型。这样做的直接方法是(假设输入来自流、控制台或网络):

class Header {
public:
Header(istream &);
istream& read(istream &);
private:
uint32_t type;
uint32_t payload_length;
}

class PayloadTypeA {
public:
PayloadTypeA {}
istream& read(istream &);
private:
uint32_t payload_1;
uint32_t payload_2;
}

class PayloadTypeB {
...
}

我设想的处理逻辑方式是:首先读取 header ,然后检查数据包类型,然后决定使用哪种有效负载类型来读取其余部分。

但是,我觉得这个解决方案似乎有些笨拙 - 我想知道是否有更好的解决方案或我应该遵循的设计习语?

谢谢

奥利弗

最佳答案

通常,您的 header 是这样的:

括号[ ]中的内容为头数据

[Header length, Data Type,] Data

如果你愿意,你可以有一个动态标题(可变长度):

[Header Length, Number of Chunks, Size of chunk 1, Size of chunk 2, Size of chunk 3 etc, Data Type,] Data

您可以创建自己的自定义 header 以匹配您发送的任何内容。

关于c++ - 网络包解析类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182579/

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