stan2903bis
Messages postés3Date d'inscriptionjeudi 10 avril 2008StatutMembreDernière intervention16 avril 2008
-
16 avril 2008 à 15:22
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
16 avril 2008 à 15:25
code erreur 424 dans
(form load
With Winsock
.Close)
le source ci dessous
Dim sNTP As String 'trame 32 bits retournée par le serveur SNTP
Dim sngTimeDelay As Single 'temps écoulé entre la connection au serveur
'et les données recues.
'la correction à apporter est égale
'à la moitié de cette valeur
Private Declare Function SetSystemTime Lib "kernel32" _
(lpSystemTime As SYSTEMTIME) As Long
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Sub Form_load()
Me.Hide
With Winsock
.Close
sNTP = Empty
'
' Nom du serveur de temps NTP.
' L'heure suisse même atomique c'est autre chose !
.RemoteHost = "ntp.metas.ch"
'
' Connection sur le port dédié 37. (RFC 1305, 1361, 2030)
'
.RemotePort = 37
.Connect
End With
End Sub
Private Sub WinSock_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Call Winsock.GetData(sData, vbString)
sNTP = sNTP & sData
End Sub
Private Sub WinSock_Connect()
sngTimeDelay = Timer 'temps écoulé depuis minuit
End Sub
Private Sub WinSock_Close() 'le serveur ferme la connection
On Error Resume Next
Do Until Winsock.State = sckClosed
Winsock.Close
DoEvents
Loop
sngTimeDelay = ((Timer - sngTimeDelay) / 2) 'correction en secondes à
apporter entre la connection et la fermeture de connection
Call SyncClock(sNTP)
End Sub
Private Sub SyncClock(sTemp As String)
Dim dblNTPTime As Double ' réponse temps en secondes écoulées depuis 1900
Dim UTCDATE As Date
Dim LngTimeFrom1990 As Long
Dim ST As SYSTEMTIME
sTemp = Trim$(sTemp) ' élimine les espaces à droite et gauche
If Len(sTemp) <> 4 Then ' vérifie la longueur de la chaine de retour 4 caractères
Call MsgBox("le serveur NTP retourne une réponse invalide.", _
vbCritical, "Réponse invalide")
Exit Sub
End If