Pregunta

Estoy escribiendo una aplicación que requiere una sincronización precisa. Después de esta pregunta , he decidido investigar el uso de NTP o tal vez NTP simple.

¿Hay alguna implementación de código abierto de estos protocolos para el iPhone? Hasta ahora he logrado encontrar un roto vincular . También soy consciente de que NTP tiene una aplicación C referencia, por lo que estoy tratando de ver cuánto esfuerzo que se requeriría para que funcione en el iPhone.

Actualización: pensé que tenía un vínculo de trabajo, pero es a la Wayback Machine, que además de ahorrar texto, no los archivos que funciona .

¿Fue útil?

Solución

Hay una pequeña biblioteca iOS llamado ios-NTP . Lo he utilizado en un proyecto en el pasado y parece que ha funcionado razonablemente bien.

A partir de mediados de 2013 el proyecto original ios-NTP tiene algunas piezas que faltan, por lo que han reflejado el repositorio SVN original al github. Puedes retirar una versión de trabajo del código aquí: https://github.com/jessedc/iOS- ntp

Otros consejos

Yo probablemente comenzar tirando de código OpenNTPD .

Si usted no está desarrollando una aplicación comercial, echar un vistazo al código fuente de Linux.

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

Si es necesario utilizar NTP, pero no desea confiar en el iPhone (o iPod) reloj, siempre puede utilizar sockets (o corrientes de cacao) y consultar el servidor de usted mismo. Es una de las transacciones de red más simple que hay.

Cocoa Streams

No sé qué aplicación se está creando, pero si confiar en el reloj es una característica crítica de su seguridad o (en el caso de la caza) engañar a la prevención, etc, entonces hay que ser muy cuidadoso de protocolos abiertos NTP-- como un tramposo podría hacer de intermediario man-in-a su solicitud NTP e informe a su aplicación lo que quería que se escuchase.

Si esto es una preocupación potencial, tendrá que construir su propia fuente confiable de la verdad para el tiempo en el servidor (por ejemplo, construir su propio servicio de tiempo, y firmar sus respuestas con cripto PK), y ajustar el reloj interno de su aplicación a que, dentro de algunos desplazamiento de reloj aceptable.

Dado que usted está desarrollando una aplicación comercial, si todo lo demás falla, RFC 2030 describe el protocolo SNTP. No tengo información sobre las bibliotecas disponibles en el mercado que no requieren de una tarea de fondo, que el iPhone no le permitirá utilizar.

Puede utilizar esa fuente abierta: https://github.com/huynguyencong/NHNetworkTime

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

y uso:

NSDate *networkDate = [NSDate networkDate];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top