Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zeitabfrage via SNTP ohne Indy ... (https://www.delphipraxis.net/73966-zeitabfrage-via-sntp-ohne-indy.html)

UliDambeck 26. Jul 2006 07:49


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:
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));
und genau da ist dann der Punkt erreicht, an dem die Sache schiefgeht:
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.

Klaus01 26. Jul 2006 08:04

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

UliDambeck 26. Jul 2006 08:27

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.

Klaus01 26. Jul 2006 08:54

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: http://safariexamples.informit.com/0...s/FPiette/ICS/

Grüße
Klaus

UliDambeck 26. Jul 2006 09:42

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.

jesus 7. Sep 2006 08:44

Re: Zeitabfrage via SNTP ohne Indy ...
 
ich nehme jetzt die hier ... aber wenn Du herausbekommst wie es mit den ICS-Kompos geht, wär ich auch neugierig.

Grüße jesus


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz