【问题标题】:Synchronizing clock between client and server programs in c在c中同步客户端和服务器程序之间的时钟
【发布时间】:2012-11-21 21:48:03
【问题描述】:

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

我已经阅读了许多关于时钟同步的 Wikipedia 文章。

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

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

Small footprint clock synchronization without NTP

Seth Robertson 的回答让我相信我错了。

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

问题是,他没有展示这些代码行,也没有给我指出一个可以查看处理这些问题的代码的地方。

我一直在查看stackoverflow,发现了许多类似的问题,但没有一个给出令人满意的答案。

所以,在一堵文字墙之后(抱歉,堆栈溢出问题建议说得很具体,并解释了我在提出问题之前所做的研究),我想简洁地陈述我的问题,希望有人可以帮帮我:

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

目前我们小组正在使用 UDP,但如有必要,我们愿意进行更改。

感谢您的帮助。

编辑:我知道我需要保持时钟同步,问题是,我如何在软件中做到这一点。我正在寻找示例代码或指向可以找到有关此主题的示例代码的位置的超链接。 结束编辑

【问题讨论】:

  • NTP 是为大多数操作系统打包的,通常只是启动服务器的问题(如果您在尚未安装的操作系统上安装它)但是,您真的需要时间吗同步这个?音频中的位置是否没有给您一个参考时间,即您的服务器发现此时应该以某个字节偏移量播放流,然后您将该偏移量交给客户端
  • 我不认为 ntp 是你要找的。看起来 JACK 音频连接套件会更适合。

标签: c synchronization client-server ntp


【解决方案1】:

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

如果您的需要只是局域网主机之间的同步,这应该可以。

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

【讨论】:

  • 在您的网络中选择一台主机作为 NTP 服务器,并让其他主机与该服务器同步。 是的,这正是我想要做的。我该怎么做?
  • 您的服务器使用哪个操作系统? @user1843252
  • 服务器正在使用 Linux Redhat。
  • NTP 主页提供了大量信息:ntp.org/ntpfaq 另外我不是 Red Hat 管理员。 “howto ntp redhat”的快速 google 发现了这一点,例如 halley.cc/ed/linux/howto/ntp.html 和许多其他处理 NTP 服务器设置的页面。 @user1843252
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 2012-06-03
  • 2020-03-08
  • 2012-09-26
  • 1970-01-01
相关资源
最近更新 更多