Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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
Networking 服务器->;多客户端:同步事件_Networking_Client Server - Fatal编程技术网

Networking 服务器->;多客户端:同步事件

Networking 服务器->;多客户端:同步事件,networking,client-server,Networking,Client Server,不确定这个问题属于哪一类;也许是一般的网络/设计/算法 对于一个项目,我希望有一台服务器和多个连接的客户端。一段时间后,当所有客户端都已连接时,服务器应向每个客户端发送一条消息,指示它们采取某些操作。我需要保证每个客户端将在完全相同的时间执行此操作。理论上,这是怎么做到的?我将遇到的实际困难是什么?我的目标平台是移动的 我能想到一个解决办法 服务器主动且持续地跟踪每个客户端的往返延迟。如果此延迟不会随时间变化太快,服务器应该能够补偿每个客户端的延迟,并向每个客户端发送消息,使它们大致在同一时间

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

对于一个项目,我希望有一台服务器和多个连接的客户端。一段时间后,当所有客户端都已连接时,服务器应向每个客户端发送一条消息,指示它们采取某些操作。我需要保证每个客户端将在完全相同的时间执行此操作。理论上,这是怎么做到的?我将遇到的实际困难是什么?我的目标平台是移动的

我能想到一个解决办法

  • 服务器主动且持续地跟踪每个客户端的往返延迟。如果此延迟不会随时间变化太快,服务器应该能够补偿每个客户端的延迟,并向每个客户端发送消息,使它们大致在同一时间开始执行。有更好的办法吗
一个不太相关的问题:

这很容易做到

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

因为客户机与服务器通信,而不是服务器与客户机通信(不过,您并没有对此做任何说明)。我可以为您提供以下解决方案:

当客户端连接到服务器时,它应发送其本地时间

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


然后,每个客户都知道什么时候确切地说他们需要做些什么,方法是设置一个计时器,直到他们的约会时间到来。

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

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

如果它们同时发生,所有机器上的时钟都必须同步。@HunterMcMillen您真的不必这样做。检查我的答案