如何在多个iPhone上同时调用某个功能?

时间:2009-07-01 00:37:26

标签: iphone iphone-sdk-3.0 timer

我开始将GameKit用于p2p项目,我想在两个客户端上同时调用一个函数。假设他们的时钟没有设置完全相同的时间,我如何调用NSTimer或其他任何东西,以便在两个客户端同时调用我的函数?

谢谢!

3 个答案:

答案 0 :(得分:3)

如果它只是通过蓝牙连接的两个设备之间,那么您可以指定一个作为主时钟,另一个作为从设备。首次连接时,主机发送自己当前的时间。从站可以使用它来计算自己的时钟和服务器之间的增量。然后它会通过增量来抵消任何定时器并使用该值来设置定时器(主设备使用自己的时钟,客户端自己的时钟+/-差异/主时钟)。这样,双方都相互同步。

另一种选择是从服务器(或NIST,如果您需要绝对时间值)获取时间,然后计算当前iPhone时间和服务器时间之间的增量。一旦你有了这个,你就不会单独依赖当地时间,而是总是用三角洲来抵消它。

这相当准确,但不允许网络传输延迟。如果你需要精确到毫秒级,那么你可能必须变得更加漂亮并尝试计算某种平均网络延迟来帮助缩小差距。

答案 1 :(得分:0)

最好的方法是让服务器查询两个客户端以获取其时钟时间,然后计算时差,最后向每个客户端发送自定义时间。

答案 2 :(得分:0)

真的,更大的问题是:你为什么需要这样做?坦率地说,这是一个巨大的痛苦,如果它是“所以双方都看到同一事情同时发生”,那么将一方当作“服务器”并告诉其他各方发起行动可能更容易。将因网络延迟(可能是几毫秒)而不同。