gpt4 book ai didi

objective-c - iPhone:使用 Game Kit 发送大数据

转载 作者:太空狗 更新时间:2023-10-30 03:51:03 25 4
gpt4 key购买 nike

我正在尝试编写一个应用程序,通过 Game Kit 框架与运行该应用程序的其他 iPhone 交换数据。 iPhone 相互发现并连接良好,但在我发送数据时出现问题。我知道 iPhone 已正确连接,因为当我序列化 NSString 并通过连接发送它时,它在另一端正常显示。但是,当我尝试归档更大的对象(使用 NSKeyedArchiver)时,我收到错误消息“AGPSessionBroadcast failed (801c0001)”。

我假设这是因为我发送的数据太大(我的文件大小约为 500k,Apple 似乎建议最大为 95k)。我试过将数据分成几个传输,但我永远无法在另一端正确地取消存档。我想知道是否还有其他人遇到过这个问题,您是如何解决的。

最佳答案

我在 300K 左右的文件上遇到了同样的问题。问题是发送方需要知道接收方何时在发送下一个 block 之前清空管道。

我最终得到了一个在两侧都运行的简单状态引擎。发送方发送一个 header ,其中包含要发送的总字节数和数据包大小,然后等待另一方的确认。一旦它获得握手,它就会继续发送固定大小的数据包,每个数据包都带有一个序列号。

接收方获取每一个,读取它并将其附加到缓冲区,然后将它得到的数据包序列#写回管道。发件人读取数据包#,切出另一个缓冲区的值(value),等等。每一方都跟踪它们所处的状态(空闲、发送 header 、接收 header 、发送数据、接收数据、错误、完成等)。双方必须跟踪何时读/写最后一个片段,因为它是可能小于整个缓冲区大小。

这工作正常(虽然有点慢)并且它可以缩放到任何大小。我从 5K 数据包大小开始,但运行速度很慢。将它推到 10K,但它开始引起问题,所以我退缩并保持在 8096。它适用于二进制和文本数据。

关于objective-c - iPhone:使用 Game Kit 发送大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com