0

Debian OS で Java アプリケーションを実行しており、Windows C# サーバー プログラムと通信しています。私の Java アプリケーションは、TCP/IP 経由で C# サーバー プログラムに接続します。私が今直面している問題は、Debian OS のシステム時間が常に Windows Server のシステム時間よりも遅いということです。両方のアプリケーションは、ほとんどがインターネットにアクセスできない内部ネットワークで実行されます。

  1. これら 2 つのアプリケーション間で時刻を同期する方法はありますか?
  2. NTP について読みましたが、Java は NTP を使用して C# プログラムと時刻を同期できますか?
  3. C# プログラムは NTP サーバーとして実行する必要がありますか? (何か方法はありますか?)
  4. これら 2 つのアプリケーション間のメッセージ交換を単純に記述した場合、何か問題はありますか?

誰かが実装を研究するためのリンクを提供できれば、非常にありがたいです。

4

2 に答える 2

4

すべての世界で最も優れているのは、独自のローカルNTPサーバーを実行してから、両方のボックスをローカルNTPサーバーに個別に同期することです。ボックスの1つでサーバーを実行することもできます。次に、操作するための共通のタイミングベースラインがあります。

または、これを行うためのアクセスまたはサポートがない場合は、システム間で送信されるデータパッケージで時間を送信してみませんか。次に、マシン間の違いを理解するために必要な情報が得られます。(これは、ボックス間の送信遅延を考慮していませんが、作業を完了するには十分な場合があります。)

于 2012-02-14T03:46:01.020 に答える
1

ネットワークには、そのネットワーク内の他のすべてのクロックが正確に同期する1 つの集中型 NTP サービスが必要です。理想的には、その NTP サーバーはインターネットの時間標準に対して同期しますが、同期するかどうかに関係なく、ネットワーク全体の「唯一無二の情報源」となる必要があります

古い格言が文字通りここに当てはまります。

アプリケーションが時間同期を管理しようとするのは、何らかの方法で必要な権限を持っていたとしても、適切ではありません。 (そして、そうすべきではありません!!) 代わりに、すべてのシステムのクロックが常に 1 つのマスター ソースに対して適切に同期されている必要があります。これは必須の前提条件であるべきですが、個人的な責任ではありません。

于 2012-02-14T04:28:39.800 に答える