Сетевой протокол времени для iPhone - PullRequest
27 голосов
/ 16 февраля 2010

Я пишу приложение, которое требует точного времени. Задав этот вопрос , я решил исследовать, используя NTP или, может быть, Simple NTP.

Существует ли реализация этих протоколов для iPhone с открытым исходным кодом? Пока мне удалось найти неработающую ссылку . Мне также известно, что NTP имеет эталонную реализацию C , поэтому я пытаюсь понять, сколько потребуется усилий, чтобы заставить его работать на iPhone.

Обновление: я думал, что у меня есть работающая ссылка, но это на Wayback Machine, которая сохраняет только текст, а не файлы , которая работает .

Ответы [ 7 ]

18 голосов
/ 08 ноября 2010

Есть небольшая библиотека iOS с именем ios-ntp . В прошлом я использовал его в одном проекте, и, похоже, он работал достаточно хорошо.

По состоянию на середину 2013 года в исходном проекте ios-ntp есть несколько недостающих фрагментов, поэтому я отразил исходный репозиторий svn в github. Вы можете проверить рабочую версию кода здесь: https://github.com/jessedc/iOS-ntp

5 голосов
/ 16 февраля 2010

Я бы, вероятно, начал с извлечения кода из OpenNTPD .

3 голосов
/ 22 февраля 2010

Если вы не разрабатываете коммерческое приложение, загляните в источник linux.

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

2 голосов
/ 26 февраля 2010

Поскольку вы разрабатываете коммерческое приложение, если ничего не помогает, RFC 2030 описывает протокол SNTP. У меня нет информации о коммерчески доступных библиотеках, для которых не требуется фоновая задача, которую iPhone не разрешит вам использовать.

2 голосов
/ 25 февраля 2010

Я не знаю, какое приложение вы создаете, но если доверие к часам является критической характеристикой их безопасности или (в случае игры) предотвращения мошенничества и т. Д., То вам нужно быть очень осторожным с открытыми протоколами как NTP - мошенник может сделать посредника по вашему запросу NTP и сообщить вашему приложению то, что он хочет, чтобы вы услышали.

Если это потенциально проблема, вы захотите встроить свой собственный надежный источник правды для времени в свой сервер (например, создать свою собственную службу времени и подписать свои ответы с помощью PK crypto) и установить внутренние часы вашего приложения. к этому в пределах некоторого приемлемого перекоса часов.

2 голосов
/ 25 февраля 2010

Если вам нужно использовать NTP, но вы не хотите доверять часам iPhone (или iPod), вы всегда можете просто использовать сокеты (или потоки какао) и запросить сервер самостоятельно. Это одна из самых простых сетевых транзакций.

Потоки какао

0 голосов
/ 20 сентября 2015

Вы можете использовать этот открытый исходный код: https://github.com/huynguyencong/NHNetworkTime

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

И использовать:

NSDate *networkDate = [NSDate networkDate];
...