Guten morgen!
ich hätte da eine frage an euch, ich hoffe ihr könnt mir weiter helfen.
ich suche eine möglichkeit mit einem gerät, dass keine eigene lokale systemzeit hat, die systemzeit eines anderes gerätes (zb Windows PC) über das netzwerk abzufragen und diese zeit dann in dem gerät ohne zeit weiter zu generieren und als zeit zu benutzen.
könnt ihr mir da weiter helfen?
danke schon im vorraus!
daklemmi
Seite 1 von 1
C++ Zeit Aus Netzwerk Lesen
Anzeige
#2
geschrieben 04. August 2009 - 07:38
Naja, musst halt per TCP/IP ein Serverprorgramm für den Windows PC schreiben, dass auf Anfrage die Uhrzeit zurückgibt. Und für dieses Gerät halt ne Routine, die diese Anforderung stellt und die Antwort bekommt und interpretiert.
#3
geschrieben 04. August 2009 - 08:41
Oder du nutzt das vorhandene und ausgereifte Network Time Protocol (NTP). Das gibt es auch für Windows: http://www.meinberg....rman/sw/ntp.htm
Du musst nur prüfen, wie du den Abgleich auf deinem "zeitlosen" System durchführen kannst. Vielleicht gibt es dafür ja einen NTP-Client.
Du musst nur prüfen, wie du den Abgleich auf deinem "zeitlosen" System durchführen kannst. Vielleicht gibt es dafür ja einen NTP-Client.
#4
geschrieben 04. August 2009 - 14:49
ja leider habe ich die einschränkung, auf dem system, dass die zeit liefern soll nichts installieren zu können. also muss mein gerät direkt die zeit abrufen können ohne irgendwas auf dem gegensystem machen zu müssen.
wäre es doch nur so einfach wie unter windows die systemzeit eines anderen windowsrechners zu übernehmen. dort gibt man einfach nur ein: net time \\RECHNERderZEITliefert /set /yes und schon wird die zeit übernommen.
wäre es doch nur so einfach wie unter windows die systemzeit eines anderen windowsrechners zu übernehmen. dort gibt man einfach nur ein: net time \\RECHNERderZEITliefert /set /yes und schon wird die zeit übernommen.
Dieser Beitrag wurde von Klemmi19 bearbeitet: 04. August 2009 - 14:49
#5
geschrieben 04. August 2009 - 15:06
Kannst du beide Systeme mal spezifizieren? - Denn so kann niemand konkrete Vorschläge machen.
Was ist dein Hostsystem, welches OS und ggf. zusätzliche Software läuft darauf? Was ist die Gegenseite für ein Gerät? Und was bzw. welches OS läuft auf dem Gerät?
Was ist dein Hostsystem, welches OS und ggf. zusätzliche Software läuft darauf? Was ist die Gegenseite für ein Gerät? Und was bzw. welches OS läuft auf dem Gerät?
#6
geschrieben 04. August 2009 - 15:18
Das Hostsystem (System woher die Zeit kommen soll) ist üblicher weise ein stink normaler Windows PC mit meist Windows XP.
Die gegenseite, welches die Zeit holen soll, ist ein xEPI. Dort läuft kein OS drauf. Dieses wird über ein Web-Interface gesteuert. Von dort aus möcht ich versuchen, die zeit eines (meist) windowsrechners im netzwerk zu schnappen und als eigene zeit auf dem xEPI zu benutzen. dies möglichst ohne drittsoftware
Die gegenseite, welches die Zeit holen soll, ist ein xEPI. Dort läuft kein OS drauf. Dieses wird über ein Web-Interface gesteuert. Von dort aus möcht ich versuchen, die zeit eines (meist) windowsrechners im netzwerk zu schnappen und als eigene zeit auf dem xEPI zu benutzen. dies möglichst ohne drittsoftware
#7
geschrieben 04. August 2009 - 18:55
Zitat
Oder du nutzt das vorhandene und ausgereifte Network Time Protocol (NTP). Das gibt es auch für Windows: http://www.meinberg....rman/sw/ntp.htm
Du musst nur prüfen, wie du den Abgleich auf deinem "zeitlosen" System durchführen kannst. Vielleicht gibt es dafür ja einen NTP-Client.
Du musst nur prüfen, wie du den Abgleich auf deinem "zeitlosen" System durchführen kannst. Vielleicht gibt es dafür ja einen NTP-Client.
Wie kann es einen NTP-Client für ein System geben, dass keinen eigenen Zeitgeber hat!? Irgendwie widersinnig.
Zitat
ja leider habe ich die einschränkung, auf dem system, dass die zeit liefern soll nichts installieren zu können.
Darfst du eine EXE im Userkontext laufen lassen? Weil *installieren* muß man nichts.
Zitat
wäre es doch nur so einfach wie unter windows die systemzeit eines anderen windowsrechners zu übernehmen. dort gibt man einfach nur ein: net time \\RECHNERderZEITliefert /set /yes und schon wird die zeit übernommen
Das verwendet meines Wissens das nicht gerade triviale SMB-Protokoll und du brauchst Zugriffsrechte auf dem anderen System. Ganz sicher keine "mal eben geschwind"-Sache! Das ist RICHTIG komplex!
Zitat
Dort läuft kein OS drauf.
Klar läuft da eins drauf. Ob das dokumentiert ist, ist ne andere Sache ... Kann natürlich ein sogenanntes Echtzeit-OS sein, allerdings kenne ich kein Echtzeit-OS, dass einen Webserver mitliefert.
#8
geschrieben 05. August 2009 - 06:50
#9
geschrieben 05. August 2009 - 08:09
Naja, als Code-Schnippsel wird das so irgendwie ausschauen:
... und CListenSocket ist von CSocket abgeleitet und hat reagiert auf das OnAccept()-Ereignis ...
Das ist ganz kurz und hack'n'dirty-mässig, wie in etwa das aussehen kann.
Das ganze gibt ne Standalone-EXE, die halt irgendwo im Netzwerk immer laufen sollte.
CListenSocket socket; socket.Create(6789); //Listen on port 6789 socket.Listen();
... und CListenSocket ist von CSocket abgeleitet und hat reagiert auf das OnAccept()-Ereignis ...
CListenSocket::OnAccept(int iCode) { CTime t=CTime::GetCurrentTime(); this.Send(&t.GetTime(),8,0); }
Das ist ganz kurz und hack'n'dirty-mässig, wie in etwa das aussehen kann.
Das ganze gibt ne Standalone-EXE, die halt irgendwo im Netzwerk immer laufen sollte.
Dieser Beitrag wurde von Lofote bearbeitet: 05. August 2009 - 08:10
#10
geschrieben 05. August 2009 - 08:16
Zitat (Lofote: 04.08.2009, 19:55)
Wie kann es einen NTP-Client für ein System geben, dass keinen eigenen Zeitgeber hat!? Irgendwie widersinnig.
Was ist daran widersinnig? Nur weil ein System keine (gepufferte) Echtzeituhr hat, kann ein System, das am Netzwerk hängt, doch zur Laufzeit die Zeit per (S)NTP beziehen.
Je nach Konfiguration und benötigter Genauigkeit könntest du für Windows einen einfachen "Zeitserver" schreiben, der bei Anfrage den aktuellen Timestamp oder Datum+Uhrzeit in einem beliebigen Format zurück gibt. Das ist zwar nicht unbedingt immer sehr genau, aber dafür relativ einfach.
Alternativ kannst du die Server/Client-Rollen auch tauschen, so dass man unter Windows einfach einen Client hat, der die aktuelle Zeit an das xEPI übermittelt.
Zur weiteren "Generierung" der Zeit im xEPI:
Ich weiß leider nicht, wie das xEPI genau aufgebaut ist. Aber wenn du ihn frei programmieren kannst, dann kannst du z.B. über Interrupt Requests dir eine Software Uhr aufbauen.
Thema verteilen:
Seite 1 von 1