Problemas de hora de Internet de VBDe hecho, hay tres servicios de hora diferentes en Internet, cada uno de los cuales se define como un estándar de fecha de Internet a través de una Solicitud de comentarios (RFC). Los tres estándares son RFC-867, RFC-868 y RFC-1305. Primero introduzcamos RFC-867: Protocolo diurno RFC867. Este RFC especifica los estándares de la comunidad de Internet ARPA. ARPA Todos los servidores de Internet deben adoptar e implementar este estándar. El servicio diurno es una útil herramienta de medición y depuración. Devuelve la hora y fecha actuales en formato de cadena. * Servicio diurno basado en TCP El servicio diurno es una aplicación basada en TCP. El servidor escucha en el puerto TCP 13. Una vez establecida la conexión, devuelve la fecha y la hora en formato ASCII (se ignorará cualquier dato recibido) y en Cerrar. la conexión después de la transferencia. * Servicio diurno basado en UDP El servicio diurno también puede utilizar el protocolo UDP, que también es el puerto 13, pero UDP transmite la hora actual en forma de datagramas. Los datos recibidos serán ignorados. * Formato diurno No existe un formato específico para el día. Se recomienda utilizar caracteres imprimibles ASCII, espacios y retornos de carro y avances de línea. Los siguientes son dos formatos comúnmente utilizados: Un formato común es día de la semana, mes, día, año, zona horaria Ejemplo: martes, 22 de febrero de 1982 17:00: Otro formato comúnmente utilizado en SMTP es: dd mmm aa hh: mm: ss zzz Ejemplo: 02 FEB 82 07:59:01 PST Nota: El protocolo de tiempo RFC-868 se usa para configurar el tiempo útil para la máquina. A continuación, usamos el programa VB para implementar el protocolo RFC867 y configurar el tiempo del sistema para nuestra propia computadora. . Para simplificar el proceso, el programa no realiza corrección de fecha, sólo corrección de hora.
Agregue un control Winsock en FORM1, corte y pegue el siguiente código en el formato de código de FORM1: La opción es explícita 'Usar el protocolo diurno RFC867 para obtener rutinas horarias estándar' www.time.ac.cn es el Servicio Nacional de Hora de China Centro de la Academia de Ciencias, usando el formato de hora de Beijing: lunes 26 de julio 09:58:57 2004 'time.nist.gov para el Instituto Americano de Estándares y Tecnología, usando el formato de hora de Greenway': 53212 04-07-26 02 :00: 12 50 0 0 488.3 UTC(NIST) *Private Declare Sub Sleep Lib "kernel32" (ByVal dwMillisegundos As Long) Dim NoSrv As BooleanDim TimeFromNet Private Sub Form_Load()Winsock1.Protocol = sckTCPProtocol 'Usa el protocolo TCP NetTime " www. time.ac .cn" 'Primero use la hora del Centro Nacional de Servicio de Hora de la Academia de Ciencias de China. Si NoSrv Or TimeFromNet = "" Entonces 'Si no usa la hora del Centro Nacional de Servicio de Hora de la Academia China de Ciencias, utilice la hora del Instituto Americano de Estándares y Tecnología (AIST) NetTime "time.NetTime " time.nist.gov "If NoSrv o TimeFromNet = "" Then 'Si la hora del Instituto Nacional de Estándares y Tecnología no puede obtenerse, informe un mensaje de error MsgBox "¡No se puede detectar el servidor de hora estándar de la red time.nist.gov! "De lo contrario, para minimizar los errores de transmisión de la red, vuelva a obtener la hora del Instituto Nacional de Estándares y Tecnología NetTime "time.nist.gov" por segunda vez si TimeFromNet = "" ThenMsgBox "El servidor de hora estándar de la red time.nist. ¡Se agotó el tiempo del gobierno! "ElseTimeFromNet = Mid(TimeFromNet, 17, 8)TimeFromNet = TimeSerial((Hour(TimeFromNet) 8) Mod 24, Minute(TimeFromNet), Second(TimeFromNet)))Time = TimeFromNet 'Establezca la hora del sistemaEnd IfEnd IfElse 'Para haga la red El error de transmisión se reduce y la hora del Centro Nacional de Servicio de Hora de la Academia de Ciencias de China NetTime se toma por segunda vez. " www.time.ac.cn "Si TimeFromNet = " " ThenMsgBox "Estándar de red. Servidor de tiempo www. time.ac. time.ac.cn ¡Tiempo de espera!" ElseTime = Mid(TimeFromNet, 12, 8) 'Establece el sistema timeEnd IfEnd IfEndEnd Sub 'Cierra la subrutina Winsock Private Sub Winsock1_Close()If Winsock1.State lt; gt; sckClosed ThenWinsock1.CloseEnd IfEnd Sub 'Winsock recibe evento de datos Private Sub Winsock