iPhone网络时间协议

iPhone网络时间协议,iphone,ntp,Iphone,Ntp,我正在写一个需要精确计时的应用程序。询问之后,我决定使用NTP或简单的NTP进行调查 这些协议在iPhone上是否有开源实现?到目前为止,我已经设法找到了一个解决办法。我也知道NTP有一个很好的解决方案,所以我想看看它需要付出多大的努力才能在iPhone上运行 更新:我以为我有一个可用的链接,但它是指向Wayback机器的,它只保存文本,不保存文件。我可能会从中提取代码开始。如果你不是在开发商业应用程序,请查看linux源代码 如果您需要使用NTP,但又不想信任iPhone(或iPod)的时钟,

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

这些协议在iPhone上是否有开源实现?到目前为止,我已经设法找到了一个解决办法。我也知道NTP有一个很好的解决方案,所以我想看看它需要付出多大的努力才能在iPhone上运行


更新:我以为我有一个可用的链接,但它是指向Wayback机器的,它只保存文本,不保存文件。

我可能会从中提取代码开始。

如果你不是在开发商业应用程序,请查看linux源代码


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


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


如果这是一个潜在的问题,你会希望在你的服务器上建立你自己的可信的时间真相来源(例如,建立你自己的时间服务,并用PK crypto签署你的响应),并将你的应用程序的内部时钟设置为某个可接受的时钟偏差内。

因为你正在开发一个商业应用程序,如果所有其他操作都失败,描述了SNTP协议。我没有关于不需要后台任务的商用库的信息,iPhone不允许您使用这些库。

有一个名为。我过去曾在一个项目中使用过它,它似乎工作得相当好


截至2013年年中最初的ios ntp项目缺少一些部分,因此我已将最初的svn存储库镜像到github。您可以在此处签出代码的工作版本:

您可以使用该开源代码:

和使用:

NSDate *networkDate = [NSDate networkDate];

iPhone不是已经使用NTP自动设置时钟了吗?@oefe:我不知道他们是如何设置时间的。可能从carrierhmm来看,这在iPod Touch中不起作用。。。显然,有些航空公司不提供时间(当我在美国时,我的老手机会自动设置时钟,但回到欧洲,我必须手动设置时钟。你可能想要SNTP。需要注意的是,NTP通常会在很长一段时间内对时钟进行小的调整,并重复访问时间服务器,这样计算机就不会被wallc中的大跳转吓到锁定时间(想想cron)。这需要作为后台应用程序运行,而后台应用程序需要越狱的iPhone。那么,您是在询问越狱iPhone的解决方案,还是可以在应用商店的应用程序中使用的东西?此外,IIRC ntpd还可以作为服务器运行,您可能不希望在iPhone上运行。该应用程序是为应用商店构建的谢谢,但应用程序我不过,微软的商业软件认为,网络延迟可能随时间变化很大(取决于网络负载、信号质量、EDGE/3G与WiFi等)。如果你只需要精确到几秒钟之内,可能不需要担心,但如果你关心毫秒,则更麻烦。它说“这是一项正在进行的工作。”。我可以从其他地方获得代码吗。?好的,我得到了整个xcode项目,但是当我打开项目时,一些文件丢失了。我添加了丢失的文件(从其他地方下载)但还是不走运。你们是如何执行这段代码的。我已经将ios ntp项目镜像到github,使其易于签出和运行。有人知道如何确保“网络时钟”真的是网络时钟,而不是由系统时钟生成的吗?我发现,当网络可达性较低时,它只会显示与设备时钟相同的时间。在我的情况下,如果网络时钟完全失效会更好。当前版本的ios ntp有一个严重错误,使您得到的网络时间错误。您可以使用
https://github.com/huynguyencong/NHNetworkTime
作为替代品,您确实需要小心信任时钟。但这不是不信任NTP的理由。NTP已经有用于分发受信任时间的加密模式,所以您可能不需要构建自己的协议。为什么投票被否决了?我正在修复它。我不信任ios系统时钟,因为e用户可以轻松修改,并需要检查购买日期是否已过30天。决不允许,但很有可能通过wi-fi连接到internet和NTP服务器的代理与我的iphone连接,并为iphone提供假日期。这是一个有效的、有经验的回复。请投票!
NSDate *networkDate = [NSDate networkDate];