0

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

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

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

4

2 回答 2

4

最好的办法是运行您自己的本地 NTP 服务器,然后将两个盒子独立地同步到您的本地 NTP 服务器。您甚至可以在其中一个盒子上运行服务器。然后,您将拥有一个通用的时序基准,可以根据该基准进行操作。

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

于 2012-02-14T03:46:01.020 回答
1

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

一句古老的格言在适用:“一个人只知道现在几点了;一个人不知道现在几点了。”

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

于 2012-02-14T04:28:39.800 回答