代码之家  ›  专栏  ›  技术社区  ›  Casebash

iPhone网络时间协议

  •  27
  • Casebash  · 技术社区  · 15 年前

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

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

    更新:我以为我有一个工作链接,但它是到回程机器,它只保存文本,而不是文件。 link that works .

    7 回复  |  直到 9 年前
        1
  •  18
  •   Jessedc    9 年前

    有一个叫 ios-ntp . 我过去曾在一个项目中使用过它,而且它似乎工作得相当好。

    截至2013年年中 原来的iOSNTP项目有一些缺失的部分,所以我已经将原来的SVN存储库镜像到了GitHub。您可以在此处签出代码的工作版本: https://github.com/jessedc/iOS-ntp

        2
  •  5
  •   Rob Napier    15 年前

    我可能先从 OpenNTPD .

        3
  •  3
  •   Andrew B    14 年前

    如果您没有开发商业应用程序,请浏览Linux源代码。

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

        4
  •  2
  •   Stephen Melvin    14 年前

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

    Cocoa Streams

        5
  •  2
  •   Ben Zotto sberry    14 年前

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

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

        6
  •  2
  •   Mike DeSimone    14 年前

    既然你正在开发一个商业应用程序,如果其他都失败了, RFC 2030 描述SNTP协议。我没有关于商用图书馆的信息,这些图书馆不需要背景任务,iPhone不允许你使用。

        7
  •  0
  •   huync    9 年前

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

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

    用途:

    NSDate *networkDate = [NSDate networkDate];