Français
Unités

Daytime Protocol Unit - Internetzeit sur Zeitserver

 

Andre
Rohland
allô liebe Community,

je suis déjà un assez alter Profan - Dino ( depuis Version 5.5 ).
qui Entwicklung de Profan habe je jusqu'à zur aktuellen Version stets aufmerksam et begeistert verfolgt, allerdings toujours seulement im Background, weil je mich la fois avec Thomas Bois gefetzt et mir pour pas wirklich Komplimente qui damaligen Profanergruppe eingefangen habe... .

Zur Zeit bastle je à einem Programme, welches erfordert, dass qui Systemzeit possible oui c'est ca aktualisiert, bzw. abgerufen wird.

Pour cette habe je bereits plusieurs Lösungsansätze gesehen, allerdings kamen vous mir zum partie comme:
1. trop compliqué et
2. trop grand
avant, besonders si on seulement qui aktuelle Zeit beötigt.

Gott sei Dank gibt es toujours Server, qui qui aktuelle Zeit et cela date sur cela sogenannte Daytime-Protocol comme String zurückgeben. qui le tort ist seulement, dass cet Protokoll pas sans équivoque défini ist, so dass verschiedene Server aussi verschiedene Cordes zurückgeben... .

peut-être peux quelqu'un de Euch cet Unit gebrauchen, je serait mich par-dessus freuen.
Voir le texte source gibt es naturellement sur Anfrage... .

Viele Grüße
André Rohland

7 kB
Hochgeladen:02.02.2009
Downloadcounter263
Download
 
02.02.2009  
 



Grüße! NTP  [...]  ist réellement assez wirrig.


Voir le texte source gibt es naturellement sur Anfrage... .


Anfrage!
 
03.02.2009  
 




Andre
Rohland
Habe den Voir le texte source encore un peu kommentiert.
Inettime
 $L
Def WSAStart(2) !wsock32.dll,WSAStartup
Def socket(3) !wsock32.dll,socket
Def WSAAsyncSelect(4) !wsock32.dll,WSAAsyncSelect
Def htons(1) !wsock32.dll,htons
Def connect(3) !wsock32.dll,connect
Def gethostbyname(1) !wsock32.dll,gethostbyname
Def recv(4) !wsock32.dll,recv
Def ioctlsocket(3) !wsock32.dll,ioctlsocket
Def closesocket(1) !wsock32.dll,closesocket
Def WSAClean(0) !wsock32.DLL,WSACleanup
Def WSAGetLastError(0) !wsock32.dll,WSAGetLastError
Def RtlMoveMemory(3) !kernel32,RtlMoveMemory
Def InternetGetConnectedState(2) !WININET.DLL,InternetGetConnectedState
Def SetSystemTime(1) !KERNEL32,SetSystemTime
Def SetLocalTime(1) !KERNEL32,SetLocalTime
USERMESSAGES 4100    Message, qui auftritt, si un Netzwerkereignis stattfindet (WSAAsyncSelect)

proc ?_getTime

    parameters netadr$,netport&,count&,pointer&,erlaubt&
    Winsock - Variablen
    declare wsaerror&,Inetadresse#,sockaddr_in#,zwbuf#,avdat&
    declare dummy&,hostent#,xnetport&,xnetorderadr&,wsadata#,mysocket&
    dim Inetadresse#,255
    dim wsadata#,526
    dim sockaddr_in#,16
    dim hostent#,$5000
    Kontrolle et Contrôle
    declare  ende%,ergebnis$,tstring$
    Systemzeit etc
    declare wYear%,wMonth%,wDay%,wHour%,wMinute%,wSecond%
    ergebnis$ =
    Bich je (déjà) drin ???

    ifnot InternetGetConnectedState(0,0)

        ergebnis$ = error 1
        return ergebnis$

    endif

    Winsock.dll initialisieren
    clear wsadata#

    si WSAStart($101,wsadata#)

        ergebnis$ = error 2
        return ergebnis$

    endif

    Streamsocket erzeugen
    P1: (AF_INET = 2) Internet Protokoll version 4 (IPv4) Adressfamilie/// P2: (SOCK_STREAM = 1)
    es soll un Streamsocket erzeugt volonté/// P3: 0 - Provider bestimmt cela Protokoll
    mysocket&=socket(2,1,0)

    si mysocket& = -1

        ergebnis$ = error 3
        WSAClean()
        return ergebnis$

    endif

    Nonblocking modus / Usermessage übergeben

    si WSAAsyncSelect(mysocket&,%hwnd,4100,$1) <> 0

        ergebnis$ = error 4
        closesocket(mysocket&)
        WSAClean()
        return ergebnis$

    endif

    clear Inetadresse#
    string Inetadresse#,0=netadr$
    dummy&=gethostbyname(Inetadresse#)     liefert Pointer sur Hostent - Struktur

    si dummy& = 0                          Internetadresse konnte pas trouvé/ aufgelöst volonté

        ergebnis$ = error 5
        closesocket(mysocket&)
        WSAClean()
        return ergebnis$

    endif

    clear hostent#
    Kopieren qui Infos aus qui hostent - Struktur ( dummy& ) dans qui eigene Bereichsvariable hostent#
    RtlMoveMemory(hostent#,dummy&,16)
    dummy&=long(hostent#,12)
    RtlMoveMemory(hostent#,dummy&,4)
    dummy&=long(hostent#,0)
    RtlMoveMemory(hostent#,dummy&,255)
    xnetorderadr&=long(hostent#,0)
    xnetport&=htons(netport&)
    Struktur pour winsock connect (Protokoll, Port, Adresse ) füllen
    word sockaddr_in#,0=2 AF_inet
    word sockaddr_in#,2=xnetport&
    long sockaddr_in#,4=xnetorderadr&
    Streamsocket relier...
    wsaerror& = connect(mysocket&,sockaddr_in#,16)

    si wsaerror& = -1

        wsaerror& = WSAGetLastError()

        ifnot (wsaerror& = 10035) | (wsaerror& = 0)  0 = ne...aucune faute, 10035 = WSAWOULDBLOCK, cet

            ergebnis$ = error 6                       annonce erfolgt à cause de dem NonBlocking - Modus,
            closesocket(mysocket&)                      ist mais pour uns unbeachtlich
            WSAClean()
            return ergebnis$

        endif

    endif

    qui nachfolgende Boucle pourrait abgeändert volonté, indem z.B. SLEEP count& (= paramètre P3)
    verwendet et qui Anzahl qui Durchläufe herabgesetzt wird
    ebenso pourrait aussi qui USERMESSAGE 4100 abgefragt volonté, pour den de mir beabsichtigten Zweck
    genügte cet variante ( i.d.R. liegt un Ergebnis pour etwa 50 Durchläufen avant ).

    si ergebnis$ =

        avdat&=0

        Whileloop count&

            ioctlsocket(mysocket&,$4004667F,addr(avdat&))  $4004667F = FIONREAD - prüft si données empfangen

            si avdat& > 0                                  wurden et gibt qui Anzahl dans avdat& zurück

                dim zwbuf#,avdat&
                clear zwbuf#
                recv(mysocket&,zwbuf#,avdat&,0)               liest qui Anzahl qui empfangenen données (avdat&)
                pause                                         dans zwbuf# un

            endif

        endwhile

        si avdat& > 0

            ergebnis$ = string$(zwbuf#,0)
            ergebnis$=translate$(ergebnis$,chr$(13)+chr$(10),)   Carriage return / Line Feed entfernen

            ifnot pointer&=0                              paramètre 4 qui Unit, pointer& ist qui Adresse

                wYear% = val(right$(ergebnis$,4))            einer übergebenen SystemTime - Struktur
                RtlMoveMemory(pointer&,addr(wYear%),2)       Struktur wird pleine....
                cas instr(JAN,Upper$(ergebnis$)) : wMonth% = 1
                cas instr(FEB,Upper$(ergebnis$)) : wMonth% = 2
                cas instr(MAR,Upper$(ergebnis$)) : wMonth% = 3
                cas instr(APR,Upper$(ergebnis$)) : wMonth% = 4
                cas instr(MAY,Upper$(ergebnis$)) : wMonth% = 5
                cas instr(JUN,Upper$(ergebnis$)) : wMonth% = 6
                cas instr(JUL,Upper$(ergebnis$)) : wMonth% = 7
                cas instr(AUG,Upper$(ergebnis$)) : wMonth% = 8
                cas instr(SEP,Upper$(ergebnis$)) : wMonth% = 9
                cas instr(OCT,Upper$(ergebnis$)) : wMonth% = 10
                cas instr(NOV,Upper$(ergebnis$)) : wMonth% = 11
                cas instr(DEC,Upper$(ergebnis$)) : wMonth% = 12
                RtlMoveMemory(pointer&+2,addr(wmonth%),2)
                wDay% = val(substr$(ergebnis$,3,chr$(32)))
                RtlMoveMemory(pointer&+6,addr(wDay%),2)
                tstring$ = substr$(ergebnis$,4,chr$(32))
                wHour% = val(substr$(tstring$,1,:))
                RtlMoveMemory(pointer&+8,addr(wHour%),2)
                wMinute% = val(substr$(tstring$,2,:))
                RtlMoveMemory(pointer&+10,addr(wMinute%),2)
                wSecond% = val(substr$(tstring$,3,:))
                RtlMoveMemory(pointer&+12,addr(wSecond%),2)

            d'autre

                erlaubt& = 0                        aucun Struktur übergeben, alors aucun Erlaubnis zum
                endif                                mettons qui Systemzeit = ignoriere paramètre 5

            d'autre

                ergebnis$ = error 7           es wurden aucun données empfangen

            endif

            closesocket(mysocket&)
            WSAClean()

        endif

        si erlaubt&                             paramètre 5 qui Unit: mettons qui Systemzeit erlaubt

            SetSystemTime(pointer&)
            dummy& = SetLocalTime(pointer&)
            casenot dummy& : ergebnis$ = error 8     faute beim mettons qui System ( lokalen ) Zeit

        endif

        return ergebnis$

    endproc

 
03.02.2009  
 




Andre
Rohland
Nanüchen...

Unit wurde 10 la fois heruntergeladen, kommentierter Voir le texte source wurde trop Disposition gestellt.

Wirklich aucun Bemerkungen, Hinweise o.ä. ?
 
04.02.2009  
 




RGH
allô Andre,

gib den Leuten doch ewas Zeit, sich avec cela trop befassen.
je lade souvent quoi herunter, um ensuite seulement très viel später - quelquefois sommes es Monate - en supplément trop venons, mich avec cela trop befassen. et manches wird geladen, venez mais mangels Gelegenheit nie zum Einsatz. sommes arrêt pas alles Schüler, Studenten ou bien retraité avec viel Zeit ici ...

Salut
Roland
(qui befürchtet, aussi dereinst comme retraité pas so viel Zeit trop avons, comment il volontiers hätte et comme étudiant pas cela nötige argent hatte, à Zeit so trop nutzen, comment il es autrefois volontiers getan hätte)
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
04.02.2009  
 



je lehne den Gedanken ab, dass Roland jamais retraité ist.

@Andre: avec qui Zeit volonté cela sûrement dutzende Downloads. toutefois, wir brauchen une weiteren Schlachtplan, viel viel plus XProfaner trop gewinnen.
 
04.02.2009  
 



Funkt. super!
 
04.02.2009  
 




Andre
Rohland
O.k., O.k. habe je kapiert...

je voulais wirklich pas rumningeln et drängeln, je hatte mich seulement un peu gewundert.
IF hatte doch sur meinen ersten poste ( Voir le texte source gibts sur Anfrage ) prompt avec Anfrage! geantwortet et je hatte eh bien irgendwie un peu Bammel, qui peut-être quelque chose pas funzt.

@Roland: Toll, toi wieder personnelle trop lesen. s'il te plaît mais pas  vom alten Profan - Dino aus dem ersten poste irreführen laisser, je suis ( avec viel Glück ) peut-être dans 23 Jahren Mitglied Deiner dritten catégorie (retraité) . jusqu'à dahin arbeite je encore comme Trainer à Grundschulen avec Kindern. Zur Zeit sommes ici dans Berlin-Brandenburg Schulferien, quoi peut-être meinen actuellement übermäßigen Zeitfonds erklärt... .

@IF: Es ging mir wirklich moins à numéro qui Downloads, comme vielmehr tout autor, qui qui Unit aussi richtig funkioniert et brauchbar ist.
Bezüglich Schlachtplan :
Ist un assez komplexes Thema, à dem je durchaus intéressé suis. Schlage avant, wir belasten cette Beitrag avec cela pas, mais faire entweder une neuen Beitrag sur, ou bien unterhalten uns direct per eMail. Wir könnten so zum Beispiel Vorstellungen austauschen, gemeinsam par-dessus rire et im Ergebnis peut-être doch une gute Strategie trouver... .
 
04.02.2009  
 




Andre
Rohland
Doch encore un wichtiger Hinweis...

dans meinem Programme, dans welchem je qui Unit verwende, volonté alle trois Zeitserver qui Uni Braunschweig abgefragt. Im Falles eines Mißerfolgs wird qui Abfrage alle trois Minuten erneut durchgeführt.

Pour Kompilieren et Linken zur ausführbaren *.exe Dossier konnte aussi pour 20 Minuten encore aucun liaison le Zeitservern hergestellt volonté, quoique im Interpreter alles correcte klappte.

qui Ursache:
je verwende Total Care de GDATA (Antivirus + Firewall). Pour dem Linken avec dem Runtime-Modul blockte qui Firewall qui liaison, quoi vous mir gemeinerweise naturellement pas anzeigte... .

Solltet son alors solche Probleme avons überprüft s'il te plaît d'abord Eure Einstellungen pour Euer Antivirusprogramm, bzw. qui Firewall(s).

dans meinem piège genügte un einfacher Scan avec qui Antivirus-Komponente de GDATA Total Care, um mon fertiges Programme comme vertrauenswürdig einzustufen, après klappte wieder alles beim ersten Versuch.

mfG
André
 
12.02.2009  
 




E.T.
Moin,
hab ca la fois ausgegraben, weil je pour oui c'est ca so quelque chose cherche.
Bringe mais cela Beispiel irgendwie pas zum courir

ou bien quelqu'un 'ne autre concept, qui Systemzeit per Internet trop se mettre ??

Hintergrund:
mon calculateur pour mon Wetterstation hat pour einem Neustart (bzw. kurzzeitigem Stromausfall) toujours unsinnige Zeit-Einstellungen.
Wohl qui Akku hin, peut sich sur 'nem Mini-PC (Orbsmart) aussi pas so simple échanger).
avec Win-eigenen Mitteln komm je pas zuverlässig plus, qui Systemzeit sûrement pour dem calculateur-Start trop se mettre: la fois klappts, öffters mais aussi pas.

là qui Software pour mon Wetterstation (et Auswertung etc.) eh pour dem Start de WIN 8.1 de einem XProfan-Programme qui Reihe pour gestartet wird, était so qui idée, doch avant dem starten qui relevanten Programme juste qui Zeit auparavant avec irgendeinem Server trop syncronisieren.
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
15.06.2020  
 




Matthias
Arlt
cela obige Beispiel veux chez mir aussi pas so droite...
une autre Possibilité bestünde sur qui Kommandozeile comment folgt:

net time /setsntp:ptbtime2.ptb.de
w32tm /resync

qui Zeitserver ist naturellement variable (pas alle marcher toujours).
cela peut sich ensuite sur différent Weise automatisieren.
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
15.06.2020  
 




E.T.
Matthias Arlt (15.06.2020)
net time /setsntp:ptbtime2.ptb.de
w32tm /resync


Funktioniert aussi pas, comme soll.
Irgendwie startet mon 8.1 den "Zeitdienst" seulement certains Zeit pour dem Start / Neustart, cela peut sich sous Dienste aussi pas changement (trotz "Start sofort" toujours une Ewigkeit später).
c'est pourquoi funzt cet variante aussi pas sûrement, et Erfolg ou bien Misserfolg peux aussi pas être contrôlé.
 
XProfan X3
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
15.06.2020  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

16.504 Views

Untitledvor 0 min.
E.T.09.12.2022
Georg Teles01.10.2022
RAW05.06.2022
Member 640534316.04.2022
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie