2010-11-29 2 views
2

Ich habe zwei PCs über LAN verbunden. Wenn der Benutzer die Zeit (über meine Anwendung) auf einen ändert, möchte ich, dass die Zeit auf der Sekunde ebenfalls aktualisiert wird (oder die zweite Maschine könnte die erste abfragen). Es gibt keinen Server, kein Internet. Was ist der beste Weg, dies zu tun?Synchronisieren der Zeit zwischen zwei PCs über TCP/IP, kein Server

Betriebssystem: XP eingebettet.
Framework: .Net 3.5

Antwort

1

Wenn Sie NTP-Server nicht verwenden können, müssen Sie es selbst schreiben.

  1. Die beiden Anwendungen implementieren beide einen WCF-Dienst und sind ein Client des anderen;
  2. Die Anwendung, deren lokale Zeit geändert wurde, benachrichtigt den anderen und sendet eine DateTime;
  3. Die Anwendung, die das aktualisierte DateTime empfängt, ändert die lokale Zeit (aber beachten Sie, dass Ihre Anwendung höhere Berechtigungen benötigt, um dies zu tun, weil Sie dies über nicht verwalteten Code tun müssen);

Wenn Sie nicht viel Präzision benötigen, sind Sie fertig. Wenn Sie eine höhere Genauigkeit benötigen, müssen Sie die Zeit zwischen dem Senden und dem Eintreffen der Daten schätzen und nicht trivial sein.

+0

Simone zu haben: Nun, einen Zeitverlust zu schätzen Sie ein Ping tun könnte. (Der durchschnittliche Ping auf zwei LAN verbundenen Computern ist jedoch ziemlich marginal.) – Patrick

1

Eine Low-Tech-Lösung könnte sein, den Befehl NET TIME \\[OtherPC] /SET auf dem Rechner auszuführen, der aktualisiert werden muss.

Sie könnten die Maschine möglicherweise so einstellen, dass sie diese in einem bestimmten Intervall aufruft.

Bitte beachten Sie, ich habe es nur auf normalen Windows-Maschinen versucht, aber ich denke, es würde auch auf Embedded funktionieren.

Bearbeiten: Umschauen scheint es wie XP Embedded unterstützt WMI, wenn es tut und es hat die Win32_OperatingSystem Klasse und es ist SetDateTime Methode, Ihre App könnte diesen Aufruf an den Remote-PC machen und Sie könnten vermeiden, für Poll zu haben Änderungen.

+0

Danke, ich gebe ihnen beide einen Versuch – Benjol

+0

Hm, [hatte ein Problem] (http://stackoverflow.com/questions/4311936/system-error -5-hat-aufgetreten-Zugriff-verweigert-wenn-Verwendung-net-Zeit-remote-set) mit der ersten Idee, in dem wir leere Passwörter haben, so erhalten wir Zugriff verweigert. Ich werde die zweite Option ausprobieren. – Benjol

0

Kann eine der Maschinen als NTP-Server bezeichnet werden? und verwenden Sie daher ein Standard-NTP-Server-System, so dass Sie nicht Ihr eigenes schreiben müssen.

Obwohl ich mit XPe nicht vertraut bin Link Got the time? scheint alle erforderlichen buzzwords

Verwandte Themen