Подтвердить что ты не робот

Сетевой протокол времени для iPhone

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

Есть ли какая-либо реализация этих протоколов для iPhone с открытым исходным кодом? До сих пор мне удалось найти неработающую ссылку. Я также знаю, что NTP имеет C reference implementation, поэтому я пытаюсь понять, сколько усилий потребуется, чтобы заставить его работать над iPhone.

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 4

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

Cocoa Потоки

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

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

И используйте:

NSDate *networkDate = [NSDate networkDate];