27

我正在编写一个需要准确计时的应用程序。在问了这个问题之后,我决定使用 NTP 或 Simple NTP 进行调查。

iPhone 上是否有这些协议的开源实现?到目前为止,我已经设法找到了一个断开的链接。我也知道 NTP 有一个C 参考实现,所以我想看看它需要多少努力才能在 iPhone 上运行。

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

4

7 回答 7

18

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

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

于 2010-11-08T04:12:57.040 回答
5

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

于 2010-02-16T00:11:14.623 回答
3

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

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

于 2010-02-22T19:08:00.243 回答
3

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

可可流

于 2010-02-24T21:59:20.800 回答
2

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

如果这可能是一个问题,您将希望在您的服务器中构建您自己的时间可信来源(例如构建您自己的时间服务,并使用 PK 加密对您的响应进行签名),并将您的应用程序的内部时钟设置为一些可接受的时钟偏差。

于 2010-02-24T22:49:25.377 回答
2

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

于 2010-02-25T22:35:15.557 回答
1

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

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

并使用:

NSDate *networkDate = [NSDate networkDate];
于 2015-09-20T17:51:55.950 回答