利用封裝 Winodws Filtering Platform 的WinDivert 庫(kù), clumsy 能實(shí)時(shí)的將系統(tǒng)接收和發(fā)出的網(wǎng)絡(luò)數(shù)據(jù)包攔截下來(lái),人工的造成延遲,掉包和篡改操作后再進(jìn)行發(fā)送。無(wú)論你是要重現(xiàn)網(wǎng)絡(luò)異常造成的程序錯(cuò)誤,還是評(píng)估你的應(yīng)用程序在不良網(wǎng)絡(luò)狀況下的表現(xiàn),clumsy 都能讓你在不需要額外添加代碼的情況下,在系統(tǒng)層次幫你達(dá)到想要的效果.
Clumsy使用方法
首先請(qǐng)根據(jù)你系統(tǒng)的版本(32位或64位)下載 clumsy 最新版本。注意如果你安裝的是64位的系統(tǒng)那么一定要下載64位的 clumsy。另一件重要的事實(shí) clumsy 需要管理員權(quán)限才能正常工作。雙擊打開(kāi) clumsy 的話會(huì)彈出 UAC 對(duì)話框。如果沒(méi)有的話請(qǐng)右鍵點(diǎn)擊 clumsy.exe 選擇“以管理員身份運(yùn)行”。
當(dāng)你輸入了 filter 點(diǎn)擊 ‘開(kāi)始’ 后,clumsy 就已經(jīng)開(kāi)始截獲包裹。這個(gè)一定會(huì)有一定的效率損失。但好消息是 clumsy 本身就是為了模擬網(wǎng)絡(luò)狀況糟糕的軟件所以這個(gè)問(wèn)題不是很嚴(yán)重。 另一方面,你應(yīng)該精確的設(shè)置 filter 的內(nèi)容,讓它盡可能準(zhǔn)確的捕捉你感興趣的數(shù)據(jù)包。
延遲比在 Lag 里設(shè)置的要嚴(yán)重很多。
這個(gè)問(wèn)題的重點(diǎn)在于,clumsy 里面的設(shè)置并不是準(zhǔn)確的可以用來(lái)做測(cè)速的值。其作用更傾向于作為參數(shù)控制軟件的行為。 另一個(gè)需要理解的是,這里的延遲是作用于每一個(gè)網(wǎng)絡(luò)包裹的。比如建立一個(gè) TCP 連接需要至少 3 個(gè)包裹。那么如果 clumsy 引入了 20ms 的延遲,對(duì)于每一個(gè)TCP 連接則至少引入了 3*20=60ms 的延遲。如果是要載入一個(gè)網(wǎng)頁(yè)的話,有部分 HTTP 請(qǐng)求必須是要按順序完成后頁(yè)面才能開(kāi)始渲染。假如要完成 1, 2, 3 這三個(gè)請(qǐng)求,那么 clumsy 在這里至少引入了 3*60=180ms 的延遲。 所以說(shuō)如果 clumsy 讓網(wǎng)絡(luò)變的很慢的話也不用太擔(dān)心。
Clumsy特色
下載即用,不需要安裝任何東西。
不需要額外設(shè)置,不需要修改你的程序的代碼。
系統(tǒng)級(jí)別的網(wǎng)絡(luò)控制,可以適用于命令行,圖形界面等任何 Windows 應(yīng)用程序。
不僅僅只支持 HTTP,任何 TCP, UDP 的網(wǎng)絡(luò)連接都可以被處理。
支持本地調(diào)試(服務(wù)器和客戶端都在 localhost)
“熱插拔”,你的程序可以一直運(yùn)行,而 clumsy 可以隨時(shí)開(kāi)啟和關(guān)閉。
實(shí)時(shí)調(diào)節(jié)各種參數(shù),詳細(xì)控制網(wǎng)絡(luò)情況。