如果我的计算机上运行了服务器,并且在其他网络上运行了多个客户端,那么测试它们之间的同步性的概念是什么?我怎么知道客户什么时候不同步?
我特别感兴趣的是游戏设计领域的网络程序员如何做到这一点(或者只是任何连续网络交换应用程序),其中实时同步性将是成功的一个重要方面。
我可以看到如何通过在不同的机器上进行并排比较在局域网上轻松实现这一点......但是一旦你将场景扩展到包括来自国外网络的客户端,我只是不确定如何在没有它的情况下完成它使用调试信息堵塞您的邮件系统,从而有效地改变同步性的方式没有调试信息通过网络传递。
那么人们解决这个问题的方法是什么?
例如,它们是否只是在启动到外部网络之前诱导/模拟本地网络上的延迟,然后希望最好?我希望有更具体的解决方案,但这就是我在此期间所做的......
答案 0 :(得分:1)
当你说同步时,我相信你在谈论网络延迟。这意味着,本地网络上的客户可能比该国另一侧的客户更快地获得其游戏信息。正确? 如果是这样,那么我相信你可以找到涵盖这类话题的书籍或论文,但我可以给你至少一种方法来检测这种延迟并提供一种管理它的方法。
要检测延迟,您的服务器可以使用一种跟踪路由程序来确定数据到达每个客户端所需的时间。可以在此处找到常见的Linux程序示例http://linux.about.com/library/cmd/blcmdl8_traceroute.htm。当服务器处理客户端数据时,它还可以连续收集延迟统计信息并将数据提供给客户端。例如,服务器可以根据自己的网络延迟更新每个客户端,以及在游戏中互相玩游戏的客户端的最长延迟时间。
然后,客户端可以使用延迟差异来确定何时应该处理从服务器接收的数据。例如,服务器告知客户端其网络延迟为50毫秒,其组的最大延迟为300毫秒。然后,客户端知道在处理来自服务器的游戏数据之前等待250毫秒。这样,每个客户端几乎同时处理来自服务器的游戏数据。
还有许多其他(可能更好)的方法来处理这种情况,但这应该让你开始朝着正确的方向前进。