GameKit的通信与GKMatchSendDataReliable一起可靠吗?

Tho*_*sen 12 objective-c gamekit ios game-center

我正在努力,GameKit.framework我正在尝试在两个iPhone之间建立可靠的通信.

我正在使用该GKMatchSendDataReliable模式发送包裹.

文件说:

GKMatchSendDataReliable

数据将持续发送,直到预期收件人成功接收或连接超时.可靠的传输按发送顺序传送.当您需要保证交货时使用此选项.

适用于iOS 4.1及更高版本.在GKMatch.h中声明.

我在WiFi连接不良时遇到了一些问题.在GameKit没有声明失去了联系,但有些包永远不会到来.

我可以依靠100%可靠的通信使用,GKMatchSendDataReliable还是Apple只使用花哨的名称来实现他们没有实现的东西?

Yan*_*Yan 1

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

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

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

  • 我收集了与你一致的证据。我不得不承认我对此感到惊讶,更不用说对苹果非常失望了。我说真的,他们的可靠连接只是公然不可靠?我必须在位于多个传输层之上的游戏层之上添加一个传输层?接下来,我们应该开始在应用程序中编写一些硬件流控制吗?FFS。 (2认同)