差網(wǎng)絡(luò)環(huán)境模擬工具 Clumsy

原文:

http://mp.weixin.qq.com/s?__biz=MzA3NjY1NTk0Ng==&mid=2681738379&idx=1&sn=40edbf5d28cf880536215466ef1346c5&scene=1&srcid=0811px97tj47gXhbMFnN7Otq#rd

Tips:電腦管家,360,安卓模擬器也可以模擬差網(wǎng)絡(luò)環(huán)境。

來源:開源中國

clumsy能在Windows平臺下人工造成不穩(wěn)定的網(wǎng)絡(luò)狀況,方便你調(diào)試應(yīng)用程序在極端網(wǎng)絡(luò)狀況下的表現(xiàn)。

簡介

利用封裝WinodwsFilteringPlatform的WinDivert庫,clumsy能實時的將系統(tǒng)接收和發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包攔截下來,人工的造成延遲,掉包和篡改操作后再進(jìn)行發(fā)送。無論你是要重現(xiàn)網(wǎng)絡(luò)異常造成的程序錯誤,還是評估你的應(yīng)用程序在不良網(wǎng)絡(luò)狀況下的表現(xiàn),clumsy都能讓你在不需要額外添加代碼的情況下,在系統(tǒng)層次幫你達(dá)到想要的效果:

特色:

下載即用,不需要安裝任何東西。

不需要額外設(shè)置,不需要修改你的程序的代碼。

系統(tǒng)級別的網(wǎng)絡(luò)控制,可以適用于命令行,圖形界面等任何Windows應(yīng)用程序。

不僅僅只支持HTTP,任何TCP,UDP的網(wǎng)絡(luò)連接都可以被處理。

支持本地調(diào)試(服務(wù)器和客戶端都在localhost)

"熱插拔",你的程序可以一直運行,而clumsy可以隨時開啟和關(guān)閉。

實時調(diào)節(jié)各種參數(shù),詳細(xì)控制網(wǎng)絡(luò)情況。

實例

下面的動畫展示了clumsy作用于一個本地的基于netcat的UDP服務(wù)器/客戶端的情況。仔細(xì)觀察你可以看到數(shù)據(jù)根據(jù)在clumsy的影響下產(chǎn)生了相應(yīng)的變化。

如果你基本知道了clumsy是干什么用的,不妨到下載頁面選擇適用于你系統(tǒng)的版本進(jìn)行下載。

詳細(xì)信息

clumsy首先根據(jù)用戶選擇的filter來攔截指定的網(wǎng)絡(luò)數(shù)據(jù)。在filter中可以設(shè)定你感興趣的協(xié)議(tcp/udp),端口號,是接收還是發(fā)出的端口。你也可以通過簡單的邏輯語句來進(jìn)一步縮小范圍。當(dāng)clumsy被激活時,只有符合這些標(biāo)準(zhǔn)的網(wǎng)絡(luò)數(shù)據(jù)會被進(jìn)行處理,而你不感興趣的數(shù)據(jù)仍然會由系統(tǒng)正常傳輸。

當(dāng)被filter的網(wǎng)絡(luò)數(shù)據(jù)包被攔截后,你可以選擇clumsy提供的功能來有目的性的調(diào)整網(wǎng)絡(luò)情況:

延遲(Lag),把數(shù)據(jù)包緩存一段時間后再發(fā)出,這樣能夠模擬網(wǎng)絡(luò)延遲的狀況。

掉包(Drop),隨機丟棄一些數(shù)據(jù)。

節(jié)流(Throttle),把一小段時間內(nèi)的數(shù)據(jù)攔截下來后再在之后的同一時間一同發(fā)出去。

重發(fā)(Duplicate),隨機復(fù)制一些數(shù)據(jù)并與其本身一同發(fā)送。

亂序(Outoforder),打亂數(shù)據(jù)包發(fā)送的順序。

篡改(Tamper),隨機修改小部分的包裹內(nèi)容。

盡管當(dāng)前寬帶網(wǎng)絡(luò)連接十分普及,但網(wǎng)絡(luò)傳輸其本身在本質(zhì)上總不是穩(wěn)定的。如果你的應(yīng)用程序中沒有應(yīng)對各種情況的處理,那么有可能一個丟失的UDP包裹都會讓你的程序崩潰。正確的調(diào)試這類行為顯然需要再代碼結(jié)構(gòu)上進(jìn)行仔細(xì)的設(shè)計和處理,還會很花功夫。而且在某些封裝緊密的開發(fā)環(huán)境(Unity3D自帶的網(wǎng)絡(luò)庫可能是一個例子)下會更麻煩。clumsy以盡可能減輕程序員負(fù)擔(dān)為目標(biāo),希望提供一個簡單方便(但并不完美)的解決方案。

【閱讀原文】直達(dá)GitHub托管地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容