我正在编写一个需要精确计时的应用程序。问完后 这个问题, ,我决定使用 NTP 或简单 NTP 进行研究。

iPhone 上有这些协议的开源实现吗?到目前为止我已经设法找到了 损坏的链接. 。我还知道 NTP 有一个 C 参考实现, ,所以我想看看需要付出多少努力才能使其在 iPhone 上运行。

更新:我以为我有一个有效的链接,但它是指向 Wayback Machine 的,它只保存文本,而不保存文件 有效的链接.

有帮助吗?

解决方案

有一个名为 IOS-NTP 一个小型的iOS库。我已经在过去的一个项目中使用它,它似乎工作得相当好。

截至2013年中期的原来的IOS-NTP项目有几个缺件,所以我已经反映了原有的svn库到github上。你可以在这里签出代码的工作版本: https://github.com/jessedc/iOS- NTP

其他提示

我可能会通过从 OpenNTPD 拉动代码启动。

如果你不是开发一个商业应用,偷看了Linux源。

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

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

可可流

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

如果这是一个潜在的担忧,你要建立真相的自己可信源的时间到你的服务器(例如建立你自己的时间服务,并签订PK加密的响应),并设置您的应用程序的内部时钟到该内的一些可接受的时钟偏差。

由于你正在开发一个商业应用程序,如果一切都失败了, RFC 2030 描述SNTP协议。我有商业上可用的库没有任何信息,不需要后台任务,其中iPhone不会让你使用。

可以使用开源: https://github.com/huynguyencong/NHNetworkTime

[[NHNetworkClock sharedNetworkClock] syncWithComplete:^{
        NSLog(@"%s - Time synced %@", __PRETTY_FUNCTION__, [NSDate networkDate]);
    }];

和使用:

NSDate *networkDate = [NSDate networkDate];
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top