![]() |
Zeitabfrage via SNTP ohne Indy ...
Hallo zusammen,
angeregt durch Michael Puffs InetTime, das das Time-Protokoll über Port 37 ohne irgendwelche Komponenten nutzt, wollte ich versuchen, das Ganze auch für das (S)NTP-Protokoll über Port 123 zu adaptieren. So weit ich die RFC's verstanden habe, unterscheiden sich das Time- (RFC 868) und das NTP- (RFC 1305) und SNTP- (RFC 2030) Protokoll hinsichtlich der zurückgelieferten Daten "nur" darin, dass es sich einmal um einen 32-Bit-Wert und einmal um 'ne 64-Bit-Zahl handelt. Also:
Delphi-Quellcode:
und genau da ist dann der Punkt erreicht, an dem die Sache schiefgeht:
var
sc : tSocket; sa : tSockAddr; begin ZeroMemory (@sa, sizeof(sa)); sc := socket (AF_INET, SOCK_STREAM, 0); sa.sin_addr.S_addr := integer(pointer(hostent^.h_addr_list^)^); sa.sin_family := AF_INET; sa.sin_port := htons(123); result := connect (sc, sa, sizeof (sa)); Entweder "Connection refused" oder "Timed Out" ... Ich habe keine Idee, woran das liegen könnte - aber vielleicht jemand von euch? Bin für jeden Tipp dankbar. uli. |
Re: Zeitabfrage via SNTP ohne Indy ...
Hallo Uli,
kenne mich in der Socketprogrammierung nicht so aus, aber kann es sein das Du versuchst eine TCP Verbindung zum NTP Server aufzubauen? Aber läuft NTP nicht über das UDP Protokoll? Grüße Klaus |
Re: Zeitabfrage via SNTP ohne Indy ...
Hi Klaus,
danke für den Tipp - du hast natürlich Recht, (S)NTP läuft über das UDP-Protokoll. Allerdings horcht (so wie ich's verstanden habe) ein Time-Server auf eine TCP/UDP -Verbindung auf Port 37. Daraus hatte ich geschlossen, dass es mit den selben Verfahren möglich sein müsste, auch auf Port 123 zu connecten. Anders gefragt: Wie muss ich die UDP-Verbindung denn aufbauen? (Du merkst - so richtig fit bin ich in diesen Dingen auch nicht. Ehrlich gesagt, ist's das erste Mal, dass ich mich an Socket-Programmierung versuche ...) Gruß, uli. |
Re: Zeitabfrage via SNTP ohne Indy ...
Hallo Uli,
da ich mich damit auch nicht auskenne, kann ich Dir da nicht viel weiterhelfen. Aber vielleicht findest Du in den Winsockets.pas aus der ICS Sammlung von FPiette Beispiele wie man an so etwas herangeht ohne Indy oder FastNet Sockets zu nutzen. Das ICS kannst Du hier laden: ![]() Grüße Klaus |
Re: Zeitabfrage via SNTP ohne Indy ...
Hi Klaus,
vielen Dank für den Tipp, ich hab mir ics auch gleich mal runtergeladen - sieht wohl so aus, als müsste ich einige Stunden Quelltext-Studium investieren ... Eigentlich hatte ich gehofft, dass einer der Cracks hier sofort sagen kann, was ich falsch mache und ich mich darauf konzentrieren kann, die Daten, die ich bekomme, weiterzuverarbeiten *g* Falls also noch jemand einen Tipp hat: einfach her damit ... Gruß, uli. |
Re: Zeitabfrage via SNTP ohne Indy ...
ich nehme jetzt
![]() Grüße jesus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz