Domanda

Sto scrivendo un'applicazione che richiede tempi precisi. Dopo questa domanda , ho deciso di indagare tramite NTP o forse semplice NTP.

C'è un'implementazione open source di questi protocolli per l'iPhone? Finora sono riuscito a trovare un rotto collegare . Sono anche consapevole del fatto che NTP dispone di un'implementazione C di riferimento , quindi sto cercando di vedere quanto sforzo che richiederebbe per farlo funzionare su iPhone.

Aggiornamento: pensavo di avere un collegamento di funzionamento, ma è alla Wayback Machine, che salva solo il testo, non i file link che funziona .

È stato utile?

Soluzione

C'è una piccola libreria di iOS chiamato ios-ntp . L'ho usato in un progetto in passato e tutto sembrava funzionare abbastanza bene.

A partire da metà del 2013 il progetto originale ios-NTP ha un paio di pezzi mancanti, così ho rispecchiato il repository svn originale per GitHub. È possibile verifica una versione funzionante del codice qui: https://github.com/jessedc/iOS- ntp

Altri suggerimenti

Io probabilmente iniziare tirando codice OpenNTPD .

Se non stai sviluppando un'applicazione commerciale, sbirciare la sorgente di Linux.

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

Se avete bisogno di utilizzare NTP, ma non si vuole avere fiducia l'iPhone (o iPod) l'orologio, si può sempre e solo utilizzare i socket (o flussi di cacao) e interrogare il server da soli. E 'una delle operazioni di rete più semplici là fuori.

cacao Streams

Non so quale applicazione si sta creando, ma se fidarsi l'orologio è una caratteristica fondamentale della sua sicurezza o (nel caso di gioco) imbrogliare la prevenzione, ecc, allora avete bisogno di essere molto attenti su protocolli aperti come NTP-- un truffatore potrebbe fare un man-in-the-middle su vostra richiesta NTP e dire la vostra applicazione quello che voleva sentire.

Se questo è potenzialmente un problema, ti consigliamo di costruire il proprio fonte affidabile di verità per il tempo nel server (ad esempio, costruire il proprio servizio di tempo, e firmare le vostre risposte con PK cripto), e impostare l'orologio interno della tua applicazione a quella all'interno di alcuni skew orologio accettabile.

Dal momento che si sta sviluppando un'applicazione commerciale, se tutto il resto fallisce, RFC 2030 descrive il protocollo SNTP. Non ho informazioni sulle librerie disponibili in commercio che non richiedono attività in background, che l'iPhone non vi permetterà di utilizzare.

È possibile utilizzare che l'open source: https://github.com/huynguyencong/NHNetworkTime

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

E l'uso:

NSDate *networkDate = [NSDate networkDate];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top