我正在开发在线多人游戏。当我在局域网上对其进行测试时,它可以很好地工作,但是在发布它之前,我想测试一下对于与服务器连接不佳的用户的用户体验。在本地环境中,如何模拟具有高延迟,低带宽,抖动和偶发数据包丢失的不良Internet连接?
我正在开发在线多人游戏。当我在局域网上对其进行测试时,它可以很好地工作,但是在发布它之前,我想测试一下对于与服务器连接不佳的用户的用户体验。在本地环境中,如何模拟具有高延迟,低带宽,抖动和偶发数据包丢失的不良Internet连接?
Answers:
我认为Dummynet是您想要的。Dummynet是一种网络仿真工具,可以模拟带宽限制,延迟,数据包丢失等。您可以轻松选择要拦截的流量并配置限制,例如,将所有传入的TCP流量限制为2Mbit / s
ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s
您会看到流量选择是由已知的ipfw防火墙完成的,并且管道提供了限制功能。
它可用于FreeBSD,Linux和Windows。
如果您使用的是Linux,则可以使用netem模拟网络的所有可能问题,例如高延迟,低带宽,数据包丢失等。
Windows有一个名为NetLimiter的选项,但我没有使用过,因此无法担保。
刚刚找到了一个名为SlowlyApp的Mac App 。
Clumsy,用于Windows Vista和7。
在本地环境中,如何模拟具有高延迟,低带宽,抖动和偶发数据包丢失的不良Internet连接?
如果您使用的是Windows,则可以尝试SoftPerfect Connection Emulator。它基本上是一种驱动程序,可以将其自身插入到应用程序和所选NIC的网络层(类似于Wireshark / WinPCAP)之间,并且可以模拟有限的带宽,延迟,数据包丢失等。用户界面简单明了。
它是一种商业产品,但是试用版可以让您进行30秒的“干扰”爆发,这足以让您判断此工具是否满足您的要求。
另一个跨平台的选项是DummyNet,它的行为方式相似(通过ipfw),但使用起来不太方便。
我想测试一下与服务器连接不佳的用户的用户体验。
我认为问题的这一部分可以重申为“我该如何处理应用程序中的网络延迟?” 一种常用且有效的技术是航位推算。链接的文章比我能更好地解释它,但是基本思想是,您的客户可以“模拟”每个实体的位置以及算法应执行的操作。每当实体偏离此算法(即玩家输入,服务器端事件等)时,它都会向每个客户端发送更新。
我已经有一段时间没有使用它了,但是我已经使用Charles对此进行了测试。它是一个具有各种网络诊断工具的应用程序,其中包括模拟您提到的问题:“不良的Internet连接,具有高延迟,低带宽,抖动和偶发的数据包丢失”
如果您精通Fiddler,并且只对HTTP / 1感兴趣,那么可以编写此脚本。
Fiddler不支持HTTP / 2,对其进行拦截将导致所有HTTP流量降级为HTTP / 1。