我使用基于 UDP 协议的 Adobe AIR 构建了简单的服务器-客户端应用程序(Windows)。我想要实现的是在单台 PC 上测试我的应用程序如何在网络干扰(延迟、数据包丢失、数据包重新排序)下工作。
网络干扰模拟的程序有很多,但看起来它们都是用来模拟两台PC之间的网络干扰的,这不是我需要的。
我使用基于 UDP 协议的 Adobe AIR 构建了简单的服务器-客户端应用程序(Windows)。我想要实现的是在单台 PC 上测试我的应用程序如何在网络干扰(延迟、数据包丢失、数据包重新排序)下工作。
网络干扰模拟的程序有很多,但看起来它们都是用来模拟两台PC之间的网络干扰的,这不是我需要的。
如果您使用的是 Windows,则不太可能在 localhost 延迟中产生一些延迟。今年冬天我遇到了这个问题,这就是我解决问题的方法。
所有延迟逻辑都将在您的 AS3 代码中。在您收到一些数据(套接字数据进度事件)的那一刻,您创建一个具有所需延迟的新定时器(或使用现有的定时器)并使用 Timer.COMPLETE 事件传递接收到的套接字数据。当你的计时器触发时,你可以像通常没有它一样使用它的数据——你调用一些需要的函数,你处理它并做你需要的任何事情。您也可以使用 setTimeout 代替 Timer,这并不重要。您还可以通过不创建计时器来添加一些随机数据包丢失,因此不会有数据通过。您还可以使用随机计时器时间,以便重新排序一些数据包。
我不会写任何代码,因为实现真的取决于你现在已经拥有的。但我希望这个小提示能帮助你:)