Español
Unidades

Daytime Protocol Unit - Internetzeit encima Zeitserver

 

Andre
Rohland
¡Hola liebe Comunidad,

Yo bin ya una bastante alter Profano - Dino ( seit Versión 5.5 ).
El Desarrollo de Profano Yo a a aktuellen Versión stets aufmerksam y begeistert verfolgt, allerdings siempre sólo en el Background, porque Yo mich veces con Thomas Hölzer gefetzt y me dafür no wirklich Komplimente el damaligen Profanergruppe eingefangen habe... .

En el momento bastle Yo a una Programa, welches erfordert, dass el Systemzeit möglichst genau aktualisiert, o. abgerufen se.

Dafür Yo ya mehrere Lösungsansätze gesehen, allerdings kamen ellos me para Teil como:
1. a kompliziert y
2. a groß
antes, besonders si uno sólo el aktuelle Tiempo beötigt.

Gott sei Dank hay siempre todavía Server, el el aktuelle Tiempo y el Datum encima el sogenannte Daytime-Protocol como String zurückgeben. Der Nachteil es sólo, dass dieses Protokoll no eindeutig definiert es, así dass verschiedene Server auch verschiedene Cuerdas zurückgeben... .

Tal vez kann alguien de Euch esta Unit gebrauchen, Yo sería mich darüber freuen.
Ver código fuente hay natürlich en Anfrage... .

Viele Grüße
André Rohland

7 kB
Hochgeladen:02.02.2009
Ladeanzahl276
Descargar
 
02.02.2009  
 



Grüße! NTP  [...]  es tatsächlich bastante wirrig.


Ver código fuente hay natürlich en Anfrage... .


Anfrage!
 
03.02.2009  
 




Andre
Rohland
Pida a los Ver código fuente todavía una wenig 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, el auftritt, si una Netzwerkereignis stattfindet (WSAAsyncSelect)

proc ?_getTime

    parámetros netadr$,netport&,count&,pointer&,erlaubt&
    Winsock - Variables
    declarar wsaerror&,Inetadresse#,sockaddr_in#,zwbuf#,avdat&
    declarar dummy&,hostent#,xnetport&,xnetorderadr&,wsadata#,mysocket&
    dim Inetadresse#,255
    dim wsadata#,526
    dim sockaddr_in#,16
    dim hostent#,$5000
    Kontrolle y Steuerung
    declarar  ende%,ergebnis$,tstring$
    Systemzeit etc
    declarar wYear%,wMonth%,wDay%,wHour%,wMinute%,wSecond%
    ergebnis$ =
    Bich Yo (ya) drin ???

    ifnot InternetGetConnectedState(0,0)

        ergebnis$ = error 1
        volver ergebnis$

    endif

    Winsock.dll inicializar
    clear wsadata#

    if WSAStart($101,wsadata#)

        ergebnis$ = error 2
        volver ergebnis$

    endif

    Streamsocket erzeugen
    P1: (AF_INET = 2) Internet Protokoll version 4 (IPv4) Adressfamilie/// P2: (SOCK_STREAM = 1)
    lo se una Streamsocket producido voluntad/// P3: 0 - Provider determinado el Protokoll
    mysocket&=socket(2,1,0)

    if mysocket& = -1

        ergebnis$ = error 3
        WSAClean()
        volver ergebnis$

    endif

    Nonblocking modus / Usermessage übergeben

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

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

    endif

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

    if dummy& = 0                          Internetadresse podría no gefunden/ aufgelöst voluntad

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

    endif

    clear hostent#
    Kopieren el Infos de el hostent - Struktur ( dummy& ) en el propio 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 para 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 verbinden...
    wsaerror& = connect(mysocket&,sockaddr_in#,16)

    if wsaerror& = -1

        wsaerror& = WSAGetLastError()

        ifnot (wsaerror& = 10035) | (wsaerror& = 0)  0 = kein Fehler, 10035 = WSAWOULDBLOCK, esta

            ergebnis$ = error 6                       Meldung es wegen el NonBlocking - Modus,
            closesocket(mysocket&)                      es aber para uns unbeachtlich
            WSAClean()
            volver ergebnis$

        endif

    endif

    El nachfolgende Bucle podría abgeändert voluntad, indem por ejemplo SLEEP count& (= Parámetro P3)
    verwendet y el Anzahl el Durchläufe herabgesetzt se
    ebenso podría auch el USERMESSAGE 4100 abgefragt voluntad, para el de me beabsichtigten Zweck
    genügte esta Variante ( i.d.R. liegt una Ergebnis después de etwa 50 Durchläufen antes ).

    if ergebnis$ =

        avdat&=0

        Whileloop count&

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

            if avdat& > 0                                  fueron y son el Anzahl en avdat& zurück

                dim zwbuf#,avdat&
                clear zwbuf#
                recv(mysocket&,zwbuf#,avdat&,0)               liest el Anzahl el empfangenen Daten (avdat&)
                romper                                         en zwbuf# una

            endif

        endwhile

        if avdat& > 0

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

            ifnot pointer&=0                              Parámetro 4 el Unit, pointer& es el Adresse

                wYear% = val(right$(ergebnis$,4))            uno übergebenen SystemTime - Struktur
                RtlMoveMemory(pointer&,addr(wYear%),2)       Struktur se gefüllt....
                caso instr(JAN,Upper$(ergebnis$)) : wMonth% = 1
                caso instr(FEB,Upper$(ergebnis$)) : wMonth% = 2
                caso instr(MAR,Upper$(ergebnis$)) : wMonth% = 3
                caso instr(APR,Upper$(ergebnis$)) : wMonth% = 4
                caso instr(MAY,Upper$(ergebnis$)) : wMonth% = 5
                caso instr(JUN,Upper$(ergebnis$)) : wMonth% = 6
                caso instr(JUL,Upper$(ergebnis$)) : wMonth% = 7
                caso instr(AUG,Upper$(ergebnis$)) : wMonth% = 8
                caso instr(SEP,Upper$(ergebnis$)) : wMonth% = 9
                caso instr(OCT,Upper$(ergebnis$)) : wMonth% = 10
                caso instr(NOV,Upper$(ergebnis$)) : wMonth% = 11
                caso 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)

            más

                erlaubt& = 0                        Keine Struktur übergeben, also no Erlaubnis para
                endif                                Setzen el Systemzeit = ignoriere Parámetro 5

            más

                ergebnis$ = error 7           lo fueron no Daten empfangen

            endif

            closesocket(mysocket&)
            WSAClean()

        endif

        if erlaubt&                             Parámetro 5 el Unit: Setzen el Systemzeit erlaubt

            SetSystemTime(pointer&)
            dummy& = SetLocalTime(pointer&)
            casenot dummy& : ergebnis$ = error 8     Fehler beim Setzen el Sistema ( lokalen ) Tiempo

        endif

        volver ergebnis$

    ENDPROC

 
03.02.2009  
 




Andre
Rohland
Nanüchen...

Unit wurde 10 veces heruntergeladen, kommentierter Ver código fuente wurde a Disposición gestellt.

Wirklich no Bemerkungen, Hinweise o.ä. ?
 
04.02.2009  
 




RGH
¡Hola Andre,

gib el Leuten doch ewas Tiempo, se así a befassen.
Yo lade oft qué herunter, en entonces sólo muy viel später - manchmal son lo Monate - dazu a kommen, mich así a befassen. Und manches se geladen, kommt aber mangels Gelegenheit nie para Einsatz. Sind sólo no alles Schüler, Studenten oder Rentner con viel Tiempo hier ...

Saludo
Roland
(el befürchtet, auch dereinst como Rentner no así viel Tiempo a haben, como gerne hätte y como Student no el nötige Geld hatte, a Tiempo así a nutzen, como lo damals gerne 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  
 



Yo lehne el Gedanken de, dass Roland jemals Rentner es.

@Andre: Mit el Tiempo voluntad el sicher dutzende Downloads. Dennoch, wir brauchen una más Schlachtplan, viel viel mehr XProfan a gewinnen.
 
04.02.2009  
 



Funkt. super!
 
04.02.2009  
 




Andre
Rohland
O.k., O.k. Yo kapiert...

Yo quería wirklich no rumningeln y drängeln, Yo hatte mich sólo una wenig gewundert.
IF hatte doch en media ersten Post ( Ver código fuente gibts en Anfrage ) prompt con Anfrage! geantwortet y yo hatte nun irgendwie una wenig Bammel, daß tal vez algo no funzt.

@Roland: Toll, Usted otra vez persönlich a lesen. Bitte aber no  vom alten Profano - Dino de el ersten Post irreführen dejar, Yo bin ( con viel Glück ) tal vez en 23 Jahren Mitglied Deiner dritten Kategorie (Rentner) . Bis dahin arbeite Todavía como Trainer a Grundschulen con Kindern. En el momento son aquí en Berlin-Brandenburg Schulferien, qué tal vez media augenblicklich übermäßigen Zeitfonds erklärt... .

@IF: Lo ging me wirklich weniger el número el Downloads, como vielmehr por lo tanto, daß el Unit auch correcto funkioniert y brauchbar es.
Bezüglich Schlachtplan :
Ist una bastante komplexes Thema, a el Yo durchaus interessiert bin. Schlage antes, wir belasten esta Contribución así no, pero hacer entweder una neuen Contribución en, oder unterhalten uns direkt por eMail. Wir könnten así para Ejemplo Vorstellungen austauschen, gemeinsam darüber lachen y en el Ergebnis tal vez doch una gute Strategie encontrar... .
 
04.02.2009  
 




Andre
Rohland
Doch todavía una wichtiger Referencia...

In mi Programa, en welchem Yo el Unit verwende, voluntad todos drei Zeitserver el Uni Braunschweig abgefragt. Im Falles uno Mißerfolgs se el Abfrage todos drei Minuten erneut durchgeführt.

Nach Kompilieren y Linken a ausführbaren *.exe Expediente podría auch después de 20 Minuten todavía no Verbindung a Zeitservern producido voluntad, obwohl en el Interpreter alles tadellos klappte.

El Ursache:
Yo verwende Total Care de GDATA (Antivirus + Firewall). Nach el Linken con el Runtime-Modul blockte el Firewall el Verbindung, qué ellos me gemeinerweise natürlich no anzeigte... .

Solltet Ihr also solche Problemas haben überprüft Por favor, zuerst Eure Einstellungen para Euer Antivirusprogramm, o. el Firewall(s).

In mi Falle genügte una einfacher Scan con el Antivirus-Komponente de GDATA Total Care, en mein fertiges Programa como vertrauenswürdig einzustufen, danach klappte otra vez alles beim ersten Intento.

mfG
André
 
12.02.2009  
 




E.T.
Moin,
tener dies veces ausgegraben, porque Yo después de genau así algo búsqueda.
Bringe aber el Ejemplo irgendwie no para laufen

Oder alguien 'ne otro Concepto, el Systemzeit por Internet a stellen ??

Hintergrund:
Mein Rechner para mi Wetterstation ha una Neustart (o. kurzzeitigem Stromausfall) siempre unsinnige Tiempo-Einstellungen.
Wohl el Akku hin, lässt se en 'nem Mini-PC (Orbsmart) auch no así simplemente wechseln).
Mit Win-eigenen Mitteln komm Yo no zuverlässig más, el Systemzeit sicher después de el Rechner-Start a stellen: veces klappts, öffters aber auch no.

Como el Software para mi Wetterstation (y Auswertung etc.) eh después de el Start de WIN 8.1 de una XProfan-Programa el Reihe después de comenzó se, war así el Gedanke, doch antes el starten el relevanten Programas igual el Tiempo vorher con irgendeinem Server a 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
Das obige Ejemplo voluntad en me auch no así bastante...
Otro Möglichkeit bestünde en Kommandozeile como folgt:

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

Der Zeitserver es natürlich variabel (no todos trabajo siempre).
Das lässt se entonces en diferente 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 auch no, como se.
Irgendwie startet mein 8.1 el "Zeitdienst" sólo etliche Tiempo después de el Start / Neustart, el lässt se bajo Dienste auch no ändern (trotz "Start sofort" siempre ni Ewigkeit später).
Deshalb funzt esta Variante auch no sicher, y Erfolg oder Misserfolg kann auch no kontrolliert voluntad.
 
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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

16.867 Views

Untitledvor 0 min.
E.T.09.12.2022
Georg Teles01.10.2022
RAW05.06.2022
Member 640534316.04.2022
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie