在c中同步客户端和服务器程序之间的时钟

时间:2012-11-21 21:48:03

标签: c synchronization client-server ntp

我正在开发一个服务器解析音频文件的项目,然后告诉客户端根据公共时钟(服务器)播放某些音频部分。理论上,我们需要高水平的同步,因为客户端节点可能正在彼此旁边播放音频,除了最小的延迟之外的所有延迟都可能产生人耳可察觉的声音偏移。我一直试图找到如何解决这个问题的c代码示例,并且运气不佳。

我已经阅读了很多关于时钟同步的维基百科文章。

http://en.wikipedia.org/wiki/Clock_synchronization

上述文章让我相信PTP将是我们在本地网络上实施的理想选择。但理想情况下,我们希望扩展我们的项目以允许通过互联网连接。这让我相信NTP会更好。我访问了NTP.org,但发现很难理解,似乎我的应用程序在本地网络上,没有连接到互联网,我根本无法使用NTP。但后来我找到了这篇文章:

Small footprint clock synchronization without NTP

Seth Robertson的回应让我相信自己错了。

您可以使用一些配置文件行(每个客户端上有四行,服务器上有五行)同步到所选系统的时钟。

问题是,他没有显示那些代码行,或者指出我可以查看处理这些问题的代码的地方。

我一直在寻找stackoverflow,发现了许多类似的问题,但没有一个能给出满意的答案。

所以,在一面文本之后(对不起,堆栈溢出问题的建议说是非常具体的并解释我在提出问题之前所做的研究),我想简洁地陈述我的问题,并希望有人可以帮助我:

在客户端/服务器软件模型中,如何在软件中保持准确的时钟同步,以便根据时间执行事件?

目前我们的团队正在使用UDP,但我们愿意在必要时进行更改。

感谢您的帮助。

编辑:我知道我需要保持时钟同步,问题是,如何在软件中执行此操作。我正在寻找示例代码,或者指向我可以在此主题上找到示例代码的地方的超链接。 EndEdit中

1 个答案:

答案 0 :(得分:0)

概念很明确:选择网络中的一台主机作为NTP服务器,让其他主机将自己与此服务器同步。

如果你的需要只是局域网主机之间的同步,那就应该这样做。

NTP服务器和客户端可以免费用于许多系统。