我根据Game Center多人游戏教程在游戏中实现了多人游戏,但我遇到了一个问题,它在不同设备上的工作方式不同,更准确地说,某些设备会发送损坏的信息包。
结果如下:
1 情况:有两个设备,它们相互连接,一切正常,都发送和接收正确的信息包
情况2:有两台设备,它们相互连接,但一台设备接收到正确的带有信息的数据包,第二台设备接收到损坏的数据包
同时,问题不是我的具体实现,您可以从上面教程的链接中下载测试项目,那里的一切都完全一样。
此代码的操作在 7 台设备上进行了测试,在 5 台设备上一切正常:iPhone 6 (iOS10), iPhone 5S (iOS9), iPad Mini 2 (iOS11), iPhone 6S+ (iOS10), iPhone 5S (iOS10)- 同时它们以不同的组合相互连接,一切正常。此代码不适用于两个设备:iPad 4 (iOS9), iPhone 5 (iOS10)- 这些设备接收正确的数据包,但第二个设备从它们接收损坏的数据包。
它在不同的 Internet 连接上进行了测试,因此它与网络无关,而特别是关于编写和发送/接收数据包。
任何人都可以提出可能是什么问题,也许有人遇到过这个问题?可以从教程上面的链接下载一个示例项目,也有这个问题。
UPD:事实证明,处理器的位数很可能存在问题..如果您连接 iPad 4(32 位)和 iPhone 5(32 位),那么一切都会正常运行,但只要它们与任何 64 位处理器连接,然后问题开始,64 位从 32 位获取损坏的数据。
我发现了同样的问题,但他们没有回答如何解决这个问题,这
uint32_t不是一个可以使用的选项,因为它typedef struct的位数不同。但是切换到的选项json或多或少是合适的。