通过Java与C#应用程序同步时间

本文关键字:同步 时间 应用程序 Java 通过 | 更新日期: 2023-09-27 18:24:34

我有一个Java应用程序在Debian操作系统上运行,并与Windows C#服务器程序通信。我的Java应用程序将通过TCP/IP连接到C#服务器程序。我现在面临的一个问题是,我的Debian操作系统时间总是比Windows Server系统时间慢。这两个应用程序大多运行在无法访问互联网的内部网络中。

  1. 我可以知道有什么方法可以同步这两个应用程序之间的时间吗
  2. 我读过NTP,Java可以使用NTP与C#程序同步时间吗
  3. C#程序必须作为NTP服务器运行吗?(有什么办法吗?)
  4. 如果在这两个应用程序之间编写简单的消息交换,会有什么问题吗

如果有人能提供研究实现的链接,我们将不胜感激。

通过Java与C#应用程序同步时间

最好的办法是运行您自己的本地NTP服务器,然后将这两个框独立同步到您的本地NTP server。您甚至可以在其中一个盒子上运行服务器。然后,您将有一个共同的时间基准,从中进行操作。

或者,如果您没有访问或支持这样做,为什么不在系统之间传输的数据包中发送时间呢。然后,您将获得了解机器之间差异所需的信息。(这不考虑盒子之间的任何传输延迟,但可能足以完成任务。)

您的网络应该有一个集中式NTP服务,该网络中的所有其他时钟都会根据该服务进行精确同步。理想情况下,NTP服务器将根据互联网时间标准进行自身同步,但无论是否同步,都应该是整个网络的"唯一真相来源"。

古老的格言字面意思是适用于这里:"一个只有一块手表的人总是知道现在是什么时间;一个只有两块手表的男人永远不会知道。"

您的应用程序尝试管理时间同步是不合适的,即使它以某种方式拥有这样做所需的权限。(而且不应该!)相反,它应该要求所有系统的时钟必须始终与一个主源正确同步。这应该是它的强制性先决条件,但不是它的个人责任。