我正在尝试调试使用蓝牙进行通信的 iPhone 应用程序。我基本上想知道设备是否应该同意将时间降至毫秒。我在使用 CFAbsoluteTimeGetCurrent() 从一个设备发送消息时标记消息,并在消息到达时从另一设备上的 CFAbsoluteTimeGetCurrent() 中减去该消息。假设它们与该粒度同步是否安全?有没有另一种方法来计时消息?
问问题
1137 次
2 回答
1
这些取决于每个设备上的时钟,所以,不,我怀疑你会得到毫秒精度。
一种可能的策略是尝试通过一系列初始网络消息找出两个设备的时钟偏移量。此后,您可以偶尔进行此同步以(尝试)考虑漂移和时钟变化。这里有一些可能有用的东西(只是在这里集思广益)......
A
将当前时间戳发送到B
(send_time
)B
以当前时间戳 (response_time
)回复A
接收响应 (receive_time
) 和估计:latency = 0.5 * (receive_time - send_time)
offset = (response_time - send_time - latency)
于 2009-07-22T15:40:15.603 回答
1
如果计时仅用于调试目的,则可能不值得,但如果您的应用程序需要同步时钟,您可以查看 Wikipedia 上的NTP 文章。您应该能够使用其中一些技术进行非常密切的同步。
我不知道 iPhone 是否通过 BSD 层内置了任何 NTP 功能,但如果需要,您可以在某处获取一些源代码。
于 2009-07-24T03:33:19.650 回答