差网络环境模拟工具 Clumsy

差网络环境模拟工具 Clumsy

MIT
C/C++ 查看源码»
Windows
2014-11-14
红薯

clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。

简介

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用 程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果:

特色:        

  • 下载即用,不需要安装任何东西。

  • 不需要额外设置,不需要修改你的程序的代码。

  • 系统级别的网络控制,可以适用于命令行,图形界面等任何 Windows 应用程序。

  • 不仅仅只支持 HTTP,任何 TCP, UDP 的网络连接都可以被处理。

  • 支持本地调试(服务器和客户端都在 localhost)

  • "热插拔",你的程序可以一直运行,而 clumsy 可以随时开启和关闭。

  • 实时调节各种参数,详细控制网络情况。

实例

下面的动画展示了 clumsy 作用于一个本地的基于 netcat 的 UDP 服务器/客户端的情况。仔细观察你可以看到数据根据在 clumsy 的影响下产生了相应的变化。          

如果你基本知道了 clumsy 是干什么用的,不妨到下载页面选择适用于你系统的版本进行下载。

详细信息

clumsy 首先根据用户选择的 filter 来拦截指定的网络数据。在 filter 中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 clumsy 被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。

当被 filter 的网络数据包被拦截后,你可以选择 clumsy 提供的功能来有目的性的调整网络情况:

  1. 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。

  2. 掉包(Drop),随机丢弃一些数据。

  3. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。

  4. 重发(Duplicate),随机复制一些数据并与其本身一同发送。

  5. 乱序(Out of order),打乱数据包发送的顺序。

  6. 篡改(Tamper),随机修改小部分的包裹内容。

尽管当前宽带网络连接十分普及,但网络传输其本身在本质上总不是稳定的。如果你的应用程序中没有应对各种情况的处理,那么有可能一个丢失的 UDP 包裹都会让你的程序崩溃。正确的调试这类行为            显然需要再代码结构上进行仔细的设计和处理,还会很花功夫。而且在某些封装紧密的开发环境(Unity3D 自带的网络库可能是一个例子)下会更麻烦。clumsy 以尽可能减轻程序员负担为目标,希望提供一个简单方便(但并不完美)的解决方案。

加载中

评论(19)

少说话多做事
少说话多做事
6666
hjlkjlugt
hjlkjlugt
创可贴嘛
曹江华
曹江华
试了一下,不起作用啊。
一起看夕阳yqk
一起看夕阳yqk
太好了,3Q~ #Clumsy#
sndnvaps
sndnvaps
看了一下,表示不会使用。。。 #Clumsy#
金贞花
金贞花
想用,不会用... #Clumsy#
d
dfsdfdfd
有使用文档吗 Clumsy
我希冀着
我希冀着
GIT.OSCHINA.NET现在不能pull代码了? Clumsy
jlthldy
jlthldy
又是一年要过去了。 Clumsy
80000
80000
oschina首页就可以在网络很差的情况下打开哦 Clumsy

暂无资讯

暂无问答

网络模拟

1、Clumsy logo差网络环境模拟工具 Clumsy 简介 利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操...

2015/07/21 09:46
24
0
clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况

clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现

2014/11/14 09:33
85
0
windows 网络丢包测试

Actor,skynet,游戏服务器,测试,网络,丢包

2016/05/10 23:29
87
2
网络客户端的几种模式

网络客户端可以使用 beginsend endsend 这种异步模式; 也可以使用 send 同步阻塞模式,同步阻塞需要单独开辟发送线程和接受线程,防止阻塞主线程; 也可以在主线程使用类似poll的方式,首先...

2016/10/01 11:48
41
0
Ethereum HD KDF

There's a long discussion about using BIP32 (the Bitcoin HD wallet KDF) and BIP44 (the KDF path standard) for Ethereum. It was raised that perhaps a different scheme could be us...

01/12 04:31
38
0
看过的文献3

看国外专门针对gre考试的博客真是个好办法,可惜不是很好找

2014/07/24 23:01
15
0
JDBC Statement vs PreparedStatement – SQL Injection Example

While working with JDBC API for database connectivity, we can use Statement orPreparedStatement to execute queries. These queries can be CRUD operation queries or even DDL queri...

2015/03/11 22:04
30
0
12 Drupal 7 Modules That You Absolutely MUST Have

Yeah, this type of post is so over done. I know. But after doing a couple of Drupal 7 sites (and working on a couple of SaaS solutions that I may be offering later this year), I...

2011/10/21 15:29
62
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部