GKMatchSendDataReliable

GKMatchSendDataReliable

我正在使用GameKit.framework,正在尝试在两部iPhone之间创建可靠通信。

我正在使用GKMatchSendDataReliable模式发送软件包。

该文档说:



我在WiFi连接不良时遇到了一些问题。 GameKit不会声明连接断开,但是某些程序包永远不会到达。

使用GKMatchSendDataReliable时,我可以指望100%可靠的通信吗?还是Apple仅将奇特的名称用于他们未实现的名称?

最佳答案

我的用户还提示游戏期间某些数据可能会意外丢失。我写了一个test app并发现GKMatchSendDataReliable并不是真正可靠的。在弱互联网连接(例如EDGE)上,某些数据包会定期丢失,而Game Center API不会有任何错误。

因此,唯一的选择是添加额外的传输层,以实现真正可靠的交付。

为此,我编写了一个简单的库:RoUTP。它保存所有已发送的消息,直到对每个接收到的消息进行确认为止,重新发送丢失的消息,并在序列中断的情况下缓冲接收到的消息。
在我的测试中,“RoUTP + GKMatchSendDataUnreliliable”的组合甚至比“RoUTP + GKMatchSendDataReliable”的组合更好(当然比纯GKMatchSendDataReliable更好,后者并不是真正可靠的)。

10-08 10:56