2010-11-29 17 views
2

LANで接続された2台のPCがあります。ユーザーがアプリケーションを介して時刻を変更すると、2番目の時刻も更新されます(または2番目のマシンが最初にポーリングできる)。サーバーもインターネットもありません。これを行う最善の方法は何ですか?TCP/IP経由で2台のPC間で時刻を同期させるサーバーなし

OS:XPが組み込まれています。
フレームワーク:.Net 3.5

答えて

1

NTPサーバーを使用できない場合は、自分で書き込む必要があります。

  1. 2つのアプリケーションは、両方ともWCFサービスを実装し、もう一方のクライアントです。
  2. ローカルタイムを変更したアプリケーションは、他のアプリケーションに通知し、DateTimeを送信します。
  3. 更新されたDateTimeを受け取るアプリケーションは現地時間を変更します(ただし、アンマネージコードで行う必要があるため、アプリケーションの実行にはより高い特権が必要になります)。

精度があまり必要ない場合は、完了です。より高い精度が必要な場合は、データの送信と到着の間の時間を見積もる必要がありますが、それは簡単ではありません。

+0

シモーネを持っているようです。 (LANに接続された2台のコンピュータの平均pingはかなり小さいですが) – Patrick

1

更新が必要なマシンでNET TIME \\[OtherPC] /SETというコマンドを実行すると、技術的な問題が発生することがあります。

マシンを一定の間隔で呼び出すように設定できます。

私は通常のWindowsマシンで試してみましたが、埋め込みでも動作すると思いますのでご注意ください。

編集:XP EmbeddedがWMIをサポートしていて、それがWin32_OperatingSystemクラスで、それがSetDateTimeメソッドを持っていれば、あなたのアプリはそのリモートPCへの呼び出しを行うことができ、変更。

+0

ありがとう、私はそれらの両方を試してみます – Benjol

+0

うーん、[問題があった](http://stackoverflow.com/questions/4311936/system-error私たちが空のパスワードを持っているという点で、最初のアイデアでアクセス拒否 - アクセス時に拒否されました。私は第二の選択肢を試してみる。 – Benjol

0

マシンの1つをNTPサーバーとして指定することはできますか?したがって標準のNTPサーバーシステムを使用して、自分で作成する必要はありません。あなたがpingを行うことができ、時間のロスを推定するために、まあ:私はXPeに精通していないですが、

このリンクGot the time?は、必要なすべての流行語

関連する問題