J'ai besoin de mon logiciel pour communiquer avec un serveur NTP afin de déterminer le décalage de l'horloge locale. J'ai essayé d'utiliser le paquet org.apache.commons.net.ntp, mais son implémentation est plutôt mauvaise sous Windows, en raison de l'utilisation de System.currentTimeMillis() pour déterminer l'heure avant et après l'échange de paquets NTP. Comme vous le savez peut-être, cette valeur n'est mise à jour que lorsque l'horloge système est activée, ce qui est le cas sur la plupart des serveurs Win2k3 modernes à 64 Hz ou tous les 15,625 ms. Ceci limite grandement la précision du calcul du décalage d'horloge. Ntpd utilise la minuterie haute fréquence du processeur pour interpoler entre les graduations de l'horloge système et atteindre une résolution beaucoup plus élevée. Connaissez-vous une implémentation Java utilisant cette technique ou une technique similaire? Ou connaissez-vous d'autres implémentations NTP autres qu'Apache?Client Java NTP
Répondre
Si vous utilisez Java 5 ou supérieur, pouvez-vous utiliser System.nanoTime() pour effectuer une mesure plus précise des décalages horaires? Vous devrez modifier votre code NTP existant, mais vous devriez avoir la source pour cela, et je ne m'attendrais pas à ce que cela soit difficile.
Oui, System.nanoTime() accède au temporisateur à haute fréquence, et je m'attendrais à ce qu'il soit utilisé pour l'horodatage dans une implémentation Java NTP décente. Cependant, ce n'est pas trivial, donc j'espère que quelqu'un d'autre a déjà fait et débogué. –
Oui. Cependant, je n'ai pas trouvé d'implémentations évidentes. Une chance de célébrité et de respect, peut-être? :-) –
System.nanoTime() ne peut être utilisé que pour mesurer le temps écoulé et n'est pas lié à une autre notion de système ou d'horloge murale. Il ne peut donc pas être utilisé pour comparer l'heure système locale à l'heure absolue d'un serveur NTP. – JasonM1
il y a une implémentation Java NTP sur support.ntp.org
Hélas, c'est une implémentation naïve de SNTP. Mais +1 pour le trouver, merci. –
Étant donné que cette question se classe très élevé sur Google pour "Java NTP client":
Android a une belle, compacte implémentation sous licence Apache d'un client NTP simple : android.net.SntpClient.
Il devrait être modifié pour fonctionner sur Java non-Android, mais cela devrait être trivial, puisque le code est environ 100 lignes de code plus 100 autres lignes de commentaires détaillés, sans dépendances externes sauf l'horloge système Android - et par hasard, il est prêt à accepter des temporisations relatives comme nanoTime()
puisqu'il utilise déjà un tel temporisateur relatif.
Comment remplacer 'SystemClock.elapsedRealtime();' – Bhargav
J'ai écrit une implémentation Java (7) que vous pouvez utiliser: SntpClient
- 1. La connexion à un serveur NTP continue à échouer (Java)
- 2. Est-ce un travail de client NTP sur un serveur SNTP?
- 3. Java LocalConnection Client
- 4. java webservice client
- 5. spymemcached (Client Java Memcached)
- 6. meilleure bibliothèque client java jabber
- 7. Client de service Web Java:
- 8. Bibliothèque client/serveur Java RTSP
- 9. java, client detect serveur est décédé
- 10. Implémentation du client - application masterserver/slaveserver java
- 11. Client webservice (soap) Java - utiliser des certificats
- 12. serveur xampp et client java/application serveur
- 13. Connexion du client Java à Glassfish
- 14. Expliquer .NET ou Java à un client
- 15. Java RMI: politique de sécurité du client
- 16. Quel client CVS pour Java recommandez-vous?
- 17. condition de concurrence dans RMI java - 2 client 1 serveur
- 18. Déterminez l'adresse IP du client distant pour l'appel RMI Java
- 19. Appel de services Web à partir d'un client Java
- 20. Serveur de socket Java tcp avec socket client j2me
- 21. Webservice Java et client .NET supprimant des objets DateTime
- 22. Application client/serveur basée sur une socket Java SSL
- 23. Client .Net vs Java Server avec données brutes
- 24. Client C# se connectant à un serveur Java via SSL
- 25. Existe-t-il une bibliothèque client CalDAV pour Java?
- 26. .NET en tant que client, Java en tant que serveur
- 27. Synchronisation de temps réseau avec Java
- 28. Axis2 Web Service Client Generation - Types sans modification du client
- 29. Est-il relativement facile de pirater le protocole NTP (Network Time Protocol)?
- 30. Messagerie client vers client C#
Pouvez-vous pas soumettre un patch à la bibliothèque Apache Commons? –
Avec le temps de mettre en œuvre et de tester, et la volonté de mes supérieurs corporatifs, oui je pourrais. –
J'ai demandé [à une question similaire] (https://softwarerecs.stackexchange.com/q/48920/1255) sur * Software Recommendations Stack Exchange *. –