または、システムクロックとサーバー間のオフセットを知ることだけですか?時間帯のために私のシステムの時計がサーバと異なる場合はどうなりますか? ありがとうJavaでNTPクライアントを介してシステムクロックを同期することはできますか?
0
A
答えて
0
Javaにはシステムクロックを直接設定するAPIがありません。これはJavaクラスから呼び出されたC/C++ネイティブコードで実行できますが、実行するには管理者権限が必要です。
ローカルシステムクロックとリモートNTPサーバ間のクロックオフセットを計算できるApache Commons NetプロジェクトのようなJavaライブラリがいくつかあります。これにより、ローカルクロックを同期させないオフセットを計算するコードが提供されます。実際に同期するには、NTPクライアント/サーバーを使用してこれを行うことをお勧めします。
JavaライブラリとNTPサービスは、UTCベースの時間を使用するため、タイムゾーンの設定は無効です。
例:
NTPUDPClient client = new NTPUDPClient();
client.open();
// use host name or IP address of target NTP server
InetAddress hostAddr = InetAddress.getByName("pool.ntp.org");
TimeInfo info = client.getTime(hostAddr);
info.computeDetails(); // compute offset/delay if not already done
Long offsetValue = info.getOffset();
Long delayValue = info.getDelay();
String delay = (delayValue == null) ? "N/A" : delayValue.toString();
String offset = (offsetValue == null) ? "N/A" : offsetValue.toString();
System.out.println(" Roundtrip delay(ms)=" + delay
+ ", clock offset(ms)=" + offset); // offset in ms
client.close();
ローカルクロックオフセットことを注意(又は時間ドリフト)は、この標準のNTP式に従ってローカルクロックとNTPサーバのクロックに対して計算されます。
LocalClockOffset = ((ReceiveTimestamp - OriginateTimestamp) +
(TransmitTimestamp - DestinationTimestamp))/2
関連する問題
- 1. Pythonでntpクライアント
- 2. ファイルロックの問題 - SCPクライアントを介して同期する
- 3. Cと同じJavaサーバーに接続できるJavaクライアントを持つことはできますか?
- 4. NTPを使用してWindowsで時間をプログラムで同期する
- 5. Ciscoルータ(IOS)がNTPサーバと同期していません(非同期)
- 6. 同期XmlHttpRequestを中止することはできますか?
- 7. 非同期コンポーネントを同期させることはできますか?
- 8. ここでスレッド同期を使用することはできますか?
- 9. Ntp同期ビデオWP7デバイス
- 10. crypto.pbkdf2は非同期ですが、どうすれば同期として扱うことができますか?
- 11. C#でデリゲートを介してメソッドをキャンセルすることはできますか
- 12. テンプレートエンジンを介してクライアントに非同期データを送信する方法はありますか?
- 13. NTPのシステムクロックの更新を停止するにはどうすればよいですか?
- 14. Bing Mapsモジュールを同期して読み込むことはできますか?
- 15. クライアントとサーバーとの間でデータを同期させますか?
- 16. ファイルパス/を介してSQLデータベースログファイルを縮小することはできますか?
- 17. COMを介してDateTimeフィールドを公開することはできますか?
- 18. MQTT Pahoクライアントを非同期に切断できますか?
- 19. Javaの「同期」とは何ですか?
- 20. ラフティングリーダーはクライアント要求を同期または非同期で処理しますか?いかだで
- 21. WebServiceクライアントのJavaパッケージを変更することはできますか?
- 22. 非同期関数でエラーをスローすることはできますか?
- 23. MVCコアで非同期コードをブロックすることはできますか?
- 24. この同期メソッドを同期ブロックから呼び出すことはできますか?
- 25. データベースはwebserviceを介して同期します
- 26. Javaストリームの端末メソッド呼び出しのみを同期することはできますか?
- 27. 非同期I/OベースのAws Javaクライアントはありますか?
- 28. AOPでアスペクトとして同期を扱うことができます
- 29. Javaで同期メソッドを宣言してトレードオフしますか?
- 30. C#クライアントのバッファをjava SocketChannelサーバーに送ることはできますか?
OSクロックは、Javaコードではなく、OSによって維持される必要があります。異なるタイムゾーンを実行しているコンピュータ間でクライアント/サーバ通信を行っている場合は、転送される日付の値の形式に両者が同意している必要があります。純粋なエポックミリ秒(常にUTC)を送信するか、新しい['Instant'](https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)または[' ZonedDateTime '](https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html)のクラスです。 – Andreas
具体的にお聞かせください:どのクライアントですか?システムクロックの設定はJava標準APIではサポートされていませんが、システムクロックを設定できるプラットフォーム固有の実装が存在する可能性があります。 (昇格特権でJavaを実行する必要がありますが、ガベージコレクションやJITコンパイルを実行しないとJava以外の実装ほど正確ではないでしょう) –
私が使用しているクライアントはApacheクライアントです:https ://commons.apache.org/net/ with NTPUDPClient –