这是摘要,我将数据包从服务器发送到在同一台计算机上运行的客户端。由于某种原因,发送的数据包与收到的数据包不同。
以下是详细信息:
使用 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 以某种方式混乱。字节6是明显改变的打包ID,以及后面的3个字节。
我怀疑这个错误是由数据包的长度引起的,因为较小的数据包似乎发送时没有任何可检测的错误,但是我理解 RakNet 会自动处理数据包损坏并在内部拆分数据包如果太大。
感谢任何帮助。
答案 0 :(得分:0)
对于有同样问题的人来说,这就是解决方案。
RakNet时间戳为32位或64位,具体取决于您的构建配置。在这种情况下,我使用64位构建发送32位时间戳。这是禁忌,因为RakNet将更改它认为是时间戳的位来计算计算机之间的相对时间。