Comment obtenir la date réelle (pas la date système) par c # ou c ++?

Est-il possible d’obtenir une date réelle (pas la date du système) sans aucune connexion à Internet? J’ai développé mon application en C #. DateTime.Now obtient la date du système mais je souhaite connaître la date réelle car la date du système peut être erronée.

C’est possible? Comment faire ça?

Si la date système est erronée, votre application doit alors obtenir la date exacte ailleurs. Cela signifie et ressource extérieure. Il peut s’agir du Web, d’un autre serveur de votre réseau ou de le saisir manuellement. Il n’y a pas de solutions magiques.

Non. En l’absence de communication externe, tout ce que vous avez est l’horloge de l’ordinateur. Si vous ne faites pas confiance à cela, vous êtes bourré.

Bien sûr, si vous essayez d’empêcher une licence d’essai chronométré, vous pouvez enregistrer l’heure UTC la plus récente et devenir suspect si vous voyez une heure de démarrage antérieure à celle de la précédente. … surtout si vous voyez cela à plusieurs resockets. Ce n’est pas la même chose que d’obtenir la date réelle, bien sûr.

Vous ne pouvez le faire que si vous savez combien la date de votre système diffère de la “date réelle”. Si vous avez ce delta dans un object TimeSpan, vous pouvez alors créer la “date réelle” à l’aide de DateTime.Now.Add(delta) . Si vous n’avez pas de connexion réseau, vous devrez obtenir le delta d’une autre manière, telle qu’une valeur entrée par l’utilisateur. Cela sera cependant difficile, car la fréquence de l’horloge système sur une machine peut varier.

Même sans Internet, il existe d’ autres sources de temps externes “fiables”. Cependant, Internet est le plus simple et un certain nombre de protocoles / serveurs de temps existent déjà. Celles-ci sont fournies sous forme de pensées, et pas nécessairement de solutions viables.

  1. Émissions d’horloge atomique du NIST (par exemple, comment fonctionnent ces “montres atomiques”). Je ne suis pas sûr d’un matériel de base pour qu’un PC puisse lire ces signaux. Allez vous lier d’amitié avec un ingénieur en électronique.

  2. GPS. Il existe de nombreux matériels GPS disponibles pour la connexion à un PC (clés USB, etc.). Même, disons, un iPhone. (Les téléphones mobiles modernes obtiendront la synchronisation de l’heure du réseau, même sans support GPS.)

  3. Votre propre horloge atomique! La dérive devrait être ignorable 😉

Heureux… des choses.

Sans Internet, vous aurez besoin d’un récepteur GPS ou d’une horloge radio .

Vous pouvez faire appel à un serveur NTP si vous pouvez établir une forme de connexion Internet qui devrait donner l’heure exacte (atomique). C # n’a pas de client NTP intégré à ma connaissance, mais il en existe un disponible à partir de:

http://mftoolkit.codeplex.com/

Vous trouverez des informations sur NTP ici:

http://en.wikipedia.org/wiki/Network_Time_Protocol