0

不确定这个问题属于哪一类;也许是一般的网络/设计/算法。

对于一个项目,我正在考虑拥有一台服务器和多个连接的客户端。一段时间后,当所有客户端都连接后,服务器应该向每个客户端发送一条消息,指示它们采取一些行动。我需要保证每个客户端将在完全相同的时间执行此操作。从理论上讲,如何做到这一点?我会遇到哪些实际并发症?我的目标平台是移动的。

我能想到的一种解决方案;

  • 服务器主动且持续地跟踪每个客户端的往返延迟。如果这种延迟不会随时间变化太快,那么服务器应该能够补偿每个客户端的延迟并向每个客户端发送消息,以便它们几乎在同一时间开始执行。有没有更好的办法?

一个不相关的问题:客户端和服务器端事件未同时触发

4

2 回答 2

0

它可以很容易地完成。

您不关心延迟,也不需要在客户端使用相同的机器时间。这里的关键是创建一个精确的约会。

由于客户端与服务器通信,反之亦然(尽管您没有说任何关于它的内容)。我可以给你以下解决方案:

当客户端连接到服务器时,它应该发送他们的本地时间。

当服务器认为是时候设置事件了。它应该向每个客户发送一个约会事件,其中包含他们的当地时间。服务器可以计算这个。

然后,每个客户都可以通过设置一个计时器来知道他们何时需要做某事,直到他们的约会时间到来。

于 2013-01-26T17:46:28.600 回答
0

理论上可以,但在现实生活中不行。至少您应该添加一些有效时隙。所有动作都应在该预定义的时间段内,以使该动作有效。

所以基本上“同一时刻” = “预定义的时隙”。预定义的时隙可以是接近同一时刻或实时的任何值

于 2013-01-26T17:46:37.803 回答