아니면 시스템 클럭과 서버 사이의 오프셋을 알고 있어야합니까? 시간대 때문에 내 시스템의 시계가 서버와 다른 경우 어떻게됩니까? 감사합니다.Java에서 NTP 클라이언트를 통해 시스템 시계를 동기화 할 수 있습니까?
0
A
답변
0
Java에 시스템 시계를 직접 설정하는 API가 없습니다. 이 작업은 Java 클래스에서 호출 된 C/C++ 원시 코드에서 수행 할 수 있지만 실행할 수있는 관리 권한이 필요합니다.
로컬 시스템 클럭과 원격 NTP 서버 사이의 시계 오프셋을 계산할 수있는 Apache Commons Net 프로젝트와 같은 일부 Java 라이브러리가 있습니다. 로컬 시계를 동기화하지 않는 오프셋을 계산하는 코드를 제공합니다. 실제로 동기화하려면 NTP 클라이언트/서버를 사용하여이 작업을 수행하는 것이 좋습니다. 거의 모든 플랫폼 (Windows, Mac, Linux 등)에 대한 NTP 구현이 있습니다.
Java 라이브러리와 NTP 서비스는 시간대 설정이 영향을 미치지 않으므로 UTC 기반 시간을 사용합니다.
예 : 로컬 클럭 오프셋 (또는 시간 드리프트)의 로컬 클럭과이 규격 NTP 방정식에 따른 NTP 서버의 클록에 대하여 계산되는
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();
참고.
LocalClockOffset = ((ReceiveTimestamp - OriginateTimestamp) +
(TransmitTimestamp - DestinationTimestamp))/2
관련 문제
- 1. NTP 동기화 비디오 WP7 장치
- 2. 이벤트 동기화 NTP 사용
- 3. Ntp 동기화 비디오 WP7
- 4. 유닉스 자동 NTP 시간 동기화
- 5. 시스템 시계를 추적하는 방법
- 6. 인터넷을 통해 시계를 동기화하십시오.
- 7. Java를 통해 C# 응용 프로그램과 시간 동기화
- 8. 서버없이 NTP 사용하기
- 9. NTP 및 RTC HW 클록 이상한 결과
- 10. Windows가 시스템 시간을 업데이트 할 때 어떻게 알 수 있습니까?
- 11. 플랫폼간에 인앱 구매을 동기화 할 수 있습니까?
- 12. NTP project in java
- 13. Android 시스템 시계를 변경 하시겠습니까?
- 14. FTP 클라이언트를 통해 리디렉션을 설정할 수 있습니까
- 15. erlang 클라이언트를 통해 어떻게면 검색을 수행 할 수 있습니까?
- 16. 알람 시계를 설정할 수 있습니까?
- 17. Java에서 시스템 호출을 할 수 없습니다.
- 18. Java에서 시계를 만드는 방법은 무엇입니까?
- 19. 사과 시계를 통해 앱 콘텐츠를 쉽게 업데이트 할 수 있습니다.
- 20. Facebook 채팅 클라이언트를 프로그래밍 할 수 있습니까?
- 21. Android 앱에서 인터넷을 통해 어떻게 동기화 할 수 있습니까?
- 22. FTP 전송을 통해 Microsoft Sync Framework와 동기화 할 수 있습니까?
- 23. 코어를 통해 TSC를 어떻게 동기화 할 수 있습니까? 사용
- 24. 어떻게 ics를 통해 변경된 이벤트 만 동기화 할 수 있습니까?
- 25. SSO를 사용하면 activesync를 통해 교환 이메일을 동기화 할 수 있습니까?
- 26. 시스템 시계를 사용하지 않고 작업 관리
- 27. 시스템 시계를 사용하여 브로드 캐스트 메시지 대기 시간을 측정하는 것이 좋습니다.
- 28. iOS 장치 시계를 올바르게 사용할 수 있습니까?
- 29. NTP가 시스템 시계를 업데이트하지 못하게하려면 어떻게해야합니까?
- 30. 구성 파일을 통해 Java에서 시스템 명령 실행
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 –