3

我有一个多人 iOS 游戏,我正在使用GKMatchSendDataReliable. 但是,有时,数据包会丢失。我已经检查了发送端,我没有收到错误。我只是在接收时没有收到它。它是间歇性的,我在接收方法的开头就有 NSLogs,所以我总是知道什么时候收到消息。

GKMatchSendDataReliable100%可靠吗?必须建立自己的可靠数据发送例程似乎是一种浪费。

似乎只有当一台设备在 Verizon 的 LTE 网络上时才会发生这种情况。我还没有尝试过任何其他蜂窝网络。仅使用时Wi-Fi,不一定是相同的 wi-fi,它工作正常。

4

3 回答 3

0

苹果表示这是一个错误并已在 iOS7 中修复

于 2013-10-02T01:38:29.317 回答
0

我的用户还抱怨在游戏过程中可能会意外丢失一些数据。我写了一个测试应用程序,发现GKMatchSendDataReliable它并不可靠。在弱互联网连接(例如 EDGE)上,一些数据包经常丢失,而 Game Center API 没有任何错误。

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

为此,我编写了一个简单的库:RoUTP。它保存所有发送的消息,直到每个接收到的确认,重新发送丢失的消息并缓冲接收到的消息以防序列中断。在我的测试中,“RoUTP + GKMatchSendDataUnreliable”组合比“RoUTP + GKMatchSendDataReliable”效果更好(当然比纯 GKMatchSendDataReliable 更好,后者并不可靠)。

于 2013-07-09T07:54:39.397 回答
0

这也发生在我身上。看起来虽然GKMatchSendDataReliableoodles 比GKMatchSendDataUnreliable(在我的测试中丢失大约 2% 的数据包)更可靠,但GKMatchSendDataReliable似乎偶尔会丢失我发送的第一个数据包(连接后立即)。

于 2013-05-30T18:00:58.553 回答