适用于iPhone的网络时间协议

时间:2010-02-15 22:56:55

标签: iphone ntp

我正在编写一个需要准确计时的应用程序。在询问this question后,我决定使用NTP或简单NTP进行调查。

iPhone有这些协议的开源实现吗?到目前为止,我已设法找到broken link。我也知道NTP有一个C reference implementation,所以我试着看看它能在iPhone上运行需要多少努力。

更新:我认为我有一个工作链接,但它是Wayback Machine,它只保存文本,而不是文件link that works

6 个答案:

答案 0 :(得分:18)

有一个名为ios-ntp的小型iOS库。我过去在一个项目中使用它,它似乎运行得相当好。

截至2013年中期原来的ios-ntp项目有一些缺失的部分,所以我将原始的svn存储库镜像到github。您可以在此处查看代码的工作版本:https://github.com/jessedc/iOS-ntp

答案 1 :(得分:5)

我可能首先从OpenNTPD中提取代码。

答案 2 :(得分:3)

如果您没有开发商业应用程序,请查看linux源代码。

http://packages.ubuntu.com/source/lucid/ntp

答案 3 :(得分:2)

如果您需要使用NTP,但又不想信任iPhone(或iPod)时钟,您可以随时使用套接字(或Cocoa流)并自行查询服务器。这是最简单的网络交易之一。

Cocoa Streams

答案 4 :(得分:2)

我不知道你正在创建什么应用程序,但如果信任时钟是其安全性的关键特性或(在游戏的情况下)作弊预防等,那么你需要非常小心开放协议就像NTP--骗子可以在你的NTP请求中做一个中间人,告诉你的应用他想让你听到什么。

如果这可能是一个问题,那么您需要建立自己可靠的事实来源,以便及时进入您的服务器(例如,建立您自己的时间服务,并使用PK加密签名您的回复),并设置您的应用程序的内部时钟在一些可接受的时钟偏差内。

答案 5 :(得分:2)

由于您正在开发商业应用程序,如果所有其他方法都失败,RFC 2030将描述SNTP协议。我没有关于不需要后台任务的商用库的信息,iPhone不允许你使用它。