Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 什么';将时间同步到毫秒精度和机器之间的精度的最佳方法是什么?_Sockets_Synchronization_Gps_Time Management - Fatal编程技术网

Sockets 什么';将时间同步到毫秒精度和机器之间的精度的最佳方法是什么?

Sockets 什么';将时间同步到毫秒精度和机器之间的精度的最佳方法是什么?,sockets,synchronization,gps,time-management,Sockets,Synchronization,Gps,Time Management,据我所知,电脑上的晶体因时钟偏移而臭名昭著。如果时钟总是倾斜的,那么在机器之间以毫秒精度和精密度同步时钟的最佳方法是什么?据我所知,NTP和PTP是可能的解决方案,但我想知道是否有人在stackoverflow.com上有任何经验 我知道NTP是流行的选择,但我想知道是否有人有过PTP(IEEE1588)的经验。NTP绝对是一种选择。基本上,只要您将其从本地主机(通常是防火墙或路由器计算机)上的防火墙中释放出来,就可以启动并忘记。正如您所建议的,NTP是解决此问题的行业标准解决方案,但它需要In

据我所知,电脑上的晶体因时钟偏移而臭名昭著。如果时钟总是倾斜的,那么在机器之间以毫秒精度和精密度同步时钟的最佳方法是什么?据我所知,NTP和PTP是可能的解决方案,但我想知道是否有人在stackoverflow.com上有任何经验


我知道NTP是流行的选择,但我想知道是否有人有过PTP(IEEE1588)的经验。

NTP绝对是一种选择。基本上,只要您将其从本地主机(通常是防火墙或路由器计算机)上的防火墙中释放出来,就可以启动并忘记。

正如您所建议的,NTP是解决此问题的行业标准解决方案,但它需要Internet连接或0层源(精确的硬件时钟,如带计算机接口的GPS接收机)


如果您使用Internet连接,请考虑使用.

只运行标准的NTP守护进程。

它可以选择从几个GPS设备获取输入,也可以与网络服务器通话

编辑:我指的是,不是Windows附带的那个


对于什么样的NTP客户端最适合windows,我没有任何建议,但对于Unix机器,没有真正的理由不运行NTP。

我在公司的整个网络中使用NTP,它工作得相当好。关键是在本地网络上有一个权威服务器,并让网络上的每台机器都与之同步。best是在该服务器上安装一个无线电时钟。NTP很好,因为它不只是偶尔校正一次时钟,而是实际计算和校正时钟频率,使其更准确


一旦我在网络上安装了NTP,我就打开了五个不同服务器的VNC会话,坐在那里看时钟。所有服务器上的时钟都是以毫秒为单位同步的,这就在安装之后。它在运行时变得更加准确。

基于NTP或SNTP的解决方案可以很好地工作,但这在很大程度上取决于cli的性能ent已经实现

当然,这个问题的答案是而不是如果你想要亚秒精度,就使用默认的Windows时间服务。众所周知,它不善于在机器上保持稳定的时基,通常会超出校正,甚至几乎不稳定,特别是当机器启动的时基相当不准确时th-这是常见的。假设标准内置窗口的工具可以可靠地在所有机器之间保持精度,通常只有几秒钟,我通常会看到机器之间的波动高达30秒,即使您调整注册表设置


免费软件工具是一个非常好的解决方案,可以达到正负500毫秒的范围。要想做得更好,需要一个更具工业实力的解决方案,例如来自

的解决方案。你无法通过交换数据将机器同步到毫秒级,因为任何数据交换本身都至少需要一个时间毫秒会发生,因此会破坏您的结果!即使是尝试先测量数据传输所需时间,然后发送时间信息(将测量的延迟考虑在内)的协议也只比平均值好一点,但它们仍然不好,因为不是每个数据传输所需的时间都相等(只要在互联网上不断ping一个服务器,看看每次ping都有不同的延迟)

在毫秒范围内真正同步两台计算机的唯一方法是让它们都通过没有未知或不断变化延迟的传输方法从同一来源获取时间。例如,如果两者都接收到卫星信号,则广播时间。信号将始终具有恒定延迟(从卫星到地球)他们两人几乎在同一纳秒内接收到了信号

例如,德国有一个无线电控制的时间。在这个国家的某个地方有一个原子钟(几百年来它的时间精确到纳秒)一些发送器会在全国范围内以给定频率永久广播当前时间。闹钟甚至手表都可以接收当前时间并与之永久同步(当然,不是永久性的,大多数型号每24小时只做一次,以节省电池运行时间)。此类接收器设备也适用于计算机,并随附软件,可将计算机时钟与该时间信号永久同步

据我所知,GPS也会发送时间信息(或者可以通过GPS信息计算时间,我对GPS协议不太熟悉)。因此,将GPS接收器连接到两台计算机上可能也会使它们同步到毫秒。但是,如果您的同步是通过Internet完成的,则不要期望一台计算机最多间隔20毫秒时同步效果更好

要更新评论者,
NTP并不像人们喜欢在这里宣称的那样准确:

NTP通常可以在整个过程中将时间保持在几十毫秒以内 公共互联网,可以达到超过一毫秒的准确度 在理想条件下的局域网

资料来源:


我宁愿在不涉及任何网络的情况下保持它们的同步,并进一步保持它们与官方格林尼治标准时间的同步。在这里,GPS可能是在所有机器上获得真正准确结果的唯一方法(不仅是毫秒,实际上是微秒)。

请记住,硬件系统时钟(即,不准确的一个)只有在机器启动时才会被读取-如果你说的是服务器机器,你不会因为它们而浪费时间。

这里有一些15年历史的软件,它可以在百分之一毫秒内同步到