HORLOGE ATOMIQUE NTP ET IP V4.1

diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008 - 13 déc. 2005 à 12:19
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017 - 23 déc. 2005 à 09:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35069-horloge-atomique-ntp-et-ip-v4-1

Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
23 déc. 2005 à 09:01
Pour ceux qui le veulent, voici 3 nouveaux serveurs français qui répondent et que l'on peut ajouter à la deuxième ligne du fichier Serveurs.ini
ntp.uvsq.fr
ntp.laas.fr
ntp.u-psud.fr

Dans le fichier Localisations.txt, mettre ça:

France Université de Versailles ntp.uvsq.fr 193.51.24.1
France Laas CNRS Toulouse ntp.laas.fr
France Campus d'Orsay, Paris Sud
ntp.u-psud.fr
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
16 déc. 2005 à 10:02
Je viens de constater que depuis que j'ai diminué le temps de consultation à 8s, si on testee un autre serveur un peu vite, T ne se met pas à 0 et on obtient une valeur erronée du temps.
Il faut remettre T à 0 dans la Sub de départ.Ajoutez
T = "0"

Private Sub Command1_Click()
Winsock1.Close
sNTP = ""
Label5.Caption = ""
Label6.Caption = ""
T = "0"

Excusez-moi, je poste un peu trop vite, je crois.je ne teste pas assez.
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
14 déc. 2005 à 14:33
En allant sur le site de l'horloge parlante:
http://www.horlogeparlante.com/
On constate une perte d'une "chtite..seconde".
Je propose donc de corriger la ligne de correction en ajoutant 1s.--->

sngTimeDelay = ((Timer - sngTimeDelay) / 2) + 1
'correction en secondes à apporter entre la connection et la fermeture de connection.
Et là, on est très proche de la justesse..
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
14 déc. 2005 à 10:34
Je vous remercie tous pour vos remarques et conseils.
Jack j'ai corrigé les anomalies que tu m'as indiquées.
Je ne savais pas que le Timer s'arrêtait à minuit.Je l'ai quand même laissé car en fait il ne sert qu'à visualiser le comptage de l'horloge du PC.
Vos propositions d'ajoûts de possibilités sont intéressantes, mais je ne sais pas si je suis capable
de réaliser ça.Je ne suis pas un expert en VB.
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
14 déc. 2005 à 09:47
Bonjour,

je n'ai pas complètement vu ta source, mais serait il possible de créer un automatisme dans ton prog , notamment en rajoutant une commande de type "/A" qui permettrait de mettre tout seul à jour l'heure, ce qui pourrait être piloté par exemple par le plannificateur de taches..
Le choix du serveur pourrait être fait en l'ouvrant manuellement, et repris automatiquement dans la version automatique, quitte à mettre un message d'erreur, si mauvaise connection

Driss
dbotton Messages postés 15 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 23 novembre 2006
14 déc. 2005 à 08:46
J´aimerais soulever une autre question: Pourquoi uniquement des clients NTP ? Ca serait int2ressant à mon avis dútiliser un unique client qui connecte via Internet a des serveurs NTP, et ensuite rendre disponible cette heure au reste du réseau local sans avoir à générer de traffic réseau avec Internet. Les autres PCs du réseau local devraient paramétrer comme serveur ce PC qui synchronise avec les NTP d´Internet et celui-ci ferait la distribution de´son heure de Windows. En gros, ce que je propose c´est de réaliser un client qui soit aussi serveur pour le réseau LAN. Je n´ai encore vu aucun code de serveur NTP malheureusement et trop de clients...
Qu´en pensez-vous ?
Vous me direz: Pourquoi faire ca ? Et bien ca peut être int2ressant pour éliminer ou minimser les délais d´actualisation, pour les réseaux qui n´ont acces au port 37 via Internet uniquement depuis un seul Pc ou un sous-reseau et non pas depuis tous les PCs, et pour minimiser le traffic réseau au travers des routeurs...
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
13 déc. 2005 à 21:13
tu pourrais m'ajouter a ton msn qu'on en parle car j'arrive pas a me l'adapter :s
diablaman@hotmail.com
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 déc. 2005 à 18:32
Salut
n-ème horloge atomique ...
- Dans Winsock1_Close, tu encapsule le "On Error" dans ton Do-Loop : pas top
Sort le de ta boucle
- Attention à Timer : Il se remet à zéro à minuit. Pourvu que tu ne mettes pas à l'heure ton PC entre 23h59 et 0h01 : tu risques d'avoir des surprises !
Mieux vaut utiliser l'API GetTickCount en mSec (voir "api-guide" sur www.allapi.net)
- Dans Command1 (bof le nom), sNTP = Empty : Attention, Empty n'est pas adéquat
Puisqu'il s'agit d'une String, utilise sNTP = ""
- Quand le serveur ne répond pas ... il ne répond pas.
Comme en général il répond dans les 2 ou 3 secondes, il suffit d'attendre 5 sec maxi
Voir http://www.vbfrance.com/code.aspx?ID=21180
Sechaud Messages postés 288 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 3 janvier 2017
13 déc. 2005 à 14:55
Je te remercie beaucoup de vouloir m'aider DIABLAMANSHADOW

Alors voici l'endroit où je bute:

Pour tester, j'ai ajouté en déroulant le bas de la Forme, un Label qui est le 5 et un TextBox qui est 3.

Dans le Command1_Click
on met bien sûr:
Label5.Caption = ""
Text3.Text = ""

Ensuite regarde les IF que j'ai tentés.
Ceux qui veulent tester, ajoutent les tests dans la sub du programme.


' SUB A MODIFIER
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

'***********************************
'VOICI MES TESTS A AJOUTER
'***********************************
If Len(sTemp) = 4 Then ' vérifie la longueur de la chaine de retour 4 caractères
Label5.Caption = "Bonne réponse"
Exit Sub
End If 'LA CA MARCHE et sTemp a 4 caractères

'NE MARCHENT PAS et pourtant sTemp est vide

If Len(sTemp) <> 4 Then ' vérifie la longueur de la chaine de retour 4 caractères
Label5.Caption = "Pas de réponse"
End If

If (sTemp) = "" Then ' vérifie si rien n'arrive
Label5.Caption = "Pas de réponse"
End If

If Label5.Caption = "" Then
Label5.Caption = "Pas de réponse"
Exit Sub
End If

'AUTRE TENTATIVE SANS RESULTAT
Text3.Text = dblNTPTime 'On reçoit 0 si c'est OK

If Text3.Text <> "0" Then
MsgBox ("Pas de réponse du Serveur")
End If
End Sub

If Text3.Text = "" Then
MsgBox ("Pas de réponse du Serveur")
End If
End Sub

Voilà où j'en suis!!!
diablamanshadow Messages postés 419 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 28 janvier 2008
13 déc. 2005 à 12:19
jolie horloge bien faite etc mais pk car cet assez vague uyn code a part de la verif server en gros tu a dit sur l'autre horloge que tu avais fait un systeme "tordu" pour verifier si tu savais te connecter a l'ip donnee et ensuite retourner la valeur pour dire oui je m'y connecte ou non saurais tu prendre juste le code qui verifie sa et le mettre comme une autre source donc une frm avec un textbox et un label et ton code on mettrais l'ip dans le label et lui verifie si il sais s'y connecter + un deuxieme textbox pour le port (que se soit precis) et un cmd button pour faire ok en gros tu click sur le cmdbutton et il essaye ta methode avec l'ip et le port si ses bno il met ok dans le label sinon il met no pas possible tu vois se que je veux dire se serais sympa ^^ sinon 8/10 pour ton horloge ;-)
Rejoignez-nous