obtener - ¿Cómo puedo asegurar en Java que la hora local actual es correcta?
obtener hora actual java (3)
Esta pregunta ya tiene una respuesta aquí:
Necesito asegurarme de que en mi aplicación cliente el usuario no cambie drásticamente la fecha de la máquina (por ejemplo, llevarla a 1 mes antes).
Que yo sepa, la mejor manera de verificar la hora actual en Java es
System.currentTimeInMillis()
¿Cómo puedo asegurarme de que esta es la fecha correcta, en un entorno multiplataforma (Windows, Linux, Mac, etc.)?
No hay conexión a servidores remotos disponibles, ni a internet. Además, en el momento del inicio, el tiempo ya podría estar alterado. Solo necesito verificar el tiempo para fines de lógica de biz interna, no configurar nada.
Radio reloj
Obtenga un radio reloj con una conexión USB para la salida de la hora actual sincronizada por un código de tiempo transmitido por un transmisor de radio conectado a un estándar de tiempo como un reloj atómico. Del mismo modo, un receptor de señales GPS también podría capturar la señal horaria .
La compañía Meinberg Global , al menos, ofrece varios dispositivos de este tipo .
Reloj de sol
Coloque un sundial fuera de una ventana. Adjunte una webcam a la computadora en cuestión. Coloque la cámara web en la ventana. Escriba una aplicación para interpretar la hora del día a partir de la imagen actual del reloj de sol. Advertencia: No aplicable en Seattle.
Cuadro negro, sin entradas = no ir
Más en serio, si no confía en la hora del sistema, no tiene acceso a un servidor de hora y no puede preguntarle al usuario la hora actual, no puedo imaginar ninguna solución. Tienes un cuadro negro sin entradas. El radio reloj a través de USB está agregando dicha entrada.
Wikipedia tiene un artículo sobre sincronización de reloj .
La solución no está relacionada con Java. La solución común para esto es usar el servidor NTP y configurar el sistema / SO para sincronizar siempre su hora con el servidor remoto NTP. NTP también se utiliza para sincronizar los relojes de los servidores en un clúster. Para obtener más información, puede consultar http://www.ntp.org/ntpfaq/NTP-s-def.htm
Si esto es para fines del "período de demostración", y le preocupa que el usuario pueda rechazar las solicitudes de NTP (o cerrar el acceso a Internet), no tiene suerte. Puede intentar detectar indicios de manipulación del tiempo (como archivos creados en el futuro o iniciar la aplicación en un momento anterior al tiempo de finalización registrado de la ejecución anterior), o puede medir el tiempo de uso en lugar del período de uso ( es decir, en lugar de dar a los usuarios 30 días de uso gratuito, puede darles 12 horas de tiempo de aplicación, sin embargo, lo desglosan), ya que puede medir con confianza el tiempo que pasa dentro de su aplicación.
O bien, puede confiar en sus usuarios. Algunos pueden ser piratas, pero la piratería es a menudo una cuestión de conveniencia, y la mayoría de las personas no se molestarán en cambiar el reloj solo para poder usar su software. (Por supuesto, esto solo se aplica a algunas aplicaciones; por ejemplo, no desea confiar en los usuarios si se trata de una aplicación bancaria o de contabilidad).