none
WPF多机动画时钟同步的解决办法? RRS feed

  • 问题

  •  

    问题是这样的: 我需要在很多台PC上同时跑同一个动画,简单来讲比如一条横线line从上往下移动,或从下往上移动

    每台pc单独跑,没有问题,但目前需要把他们联接起来跑一个完整的动画,这就需要同步每台pc的动画时钟

     

    我目前是这样做的:用tcp/ip 建立socket连接,控制端pc建立server,每个显示动画的pc作为客户端连接到server。

    server统一发送指令: 向下移,或向上移

    但由于网络延迟或其他原因,总会经常造成动画严重不同步。

     

     

    不知道在wpf里面,或者.net 里面是否有该问题的较好的解决方案??

     

    • 已移动 Jie Bao 2011年8月14日 18:06 (发件人:Windows Presentation Foundation)
    2011年8月12日 9:00

答案

  • 事实上是不可能存在通过网络做到的绝对同步的,即使是最好的网络游戏,他的动作都是由几十毫秒的延时的。关键在于我们的网络环境,和我们自己设计的指令是否高效。

    如果你要说到要的解决方法,我想到的是通信中的一些概念,比如握手,时钟。你所要做的只是所有的客户端有相同的时钟,并且让他们实时保持时钟一致,怎么做,你可以尝试让每个客户端每隔几秒同步次时钟,每次同步必须确认客户端ID,一定要确保所有客户端都同步成功然后再发送动作指令。当然,这其中还是会有延时的,只要在能够承受的范围内,我们就应该要去承担,因为没有绝对一致的结果的。

    还有,你的服务最好看看WCF能不能做,不要用原始的Tcp/IP Socket,那样操作太复杂了,逻辑代码不好控制。

    其实你的问题和WPF本身关系不大,不过我倒建议去.Net一般性讨论看看,看看那边的社区成员有没有好的建议,我同时也会关注你在WPF英文论坛的那个帖子的,但我不再重复了,适当的时候,我会帮你把英文那个帖子移动到.Net  Networking 论坛的,那边会更好。

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 eryang 2011年8月22日 11:07
    2011年8月14日 18:06