gpt4 book ai didi

c++ - 如何让 RakNet 更可靠?

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

这是总结,我从服务器向在同一台计算机上运行的客户端发送数据包。由于某种原因,发送的数据包与收到的数据包不同。

详情如下:

数据包是使用 RakNet 和调用函数发送的:

rakPeer->Send(&bitStream, MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_RAKNET_GUID, true);

这是服务器发送的数据包的前 10 个字节:27,50,39,133,202,135,0,0,0,99 ... 1180 更多字节

这是接收客户端看到的数据包的前 10 个字节(注意:50% 的时间是正确的,另一半是这样的):27,50,43,40,247,134,255,255,255,99 ... 1180 更多字节

第一个字节是ID_TIMESTAMP。字节 2-5 包含时间戳,我认为 RakNet 以某种方式弄乱了它。 Byte 6是packed ID,明显变化了,还有后面的3个bytes。

我怀疑错误是由数据包的长度引起的,因为较小的数据包似乎在发送时没有任何可检测到的错误,但是我知道 RakNet 会自动处理数据包损坏并在内部拆分如果包太大。

感谢任何帮助。

最佳答案

对于遇到相同问题的任何人,这是解决方案。

RakNet 时间戳为 32 位或 64 位,具体取决于您的构建配置。在这种情况下,我使用 64 位构建发送 32 位时间戳。这是一个禁忌,因为 RakNet 会更改它认为是时间戳的位,以说明计算机之间的相对时间。

关于c++ - 如何让 RakNet 更可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202975/

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