gpt4 book ai didi

c++ - 通过网络发送可变长度数组?

转载 作者:行者123 更新时间:2023-11-30 03:05:23 29 4
gpt4 key购买 nike

在我制作的游戏中,我需要能够通过网络发送整数的 std::vectors。

数据包似乎完全由字符串组成。由于 enet,我使用的网络库负责字节序,我解决这个问题的第一个想法是发送一条消息,其中第一个字节是消息 id,像往常一样,接下来的 4 个字节将是一个整数,指示数组的长度,所有后续字节都是数组中的整数。在客户端,我可以将它们推回一个 vector 中。

这是通常的做法还是我遗漏了一些关键的东西?有更好的方法吗?

谢谢

最佳答案

一般来说,有两种方法可以结合起来解决这个问题。一种是将数组的长度放在实际数组之前。另一个涉及包括一些框架来标记消息的结束(或开始)。各有优缺点。

将长度放在数组之前是最简单的。但是,如果出现长度与整数数量不匹配的错误,则无法检测到或从中恢复。

使用帧字节来标记消息的结尾具有更强健壮性的优点,并且能够以复杂性为代价从格式不正确的消息中恢复。复杂性在于,如果您的成帧字节出现在整数数组中,则必须转义字节(即前置和转义字符)。此外,您从网络读取消息的代码变得有点复杂。

当然,这一切都假设您正在处理流而不是数据报。如果您的消息已经明显打包,那么长度应该足够了。

关于c++ - 通过网络发送可变长度数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741751/

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