利用封裝 Winodws Filtering Platform 的WinDivert 庫, clumsy 能實時的將系統接收和發出的網絡數據包攔截下來,人工的形成延遲,掉包和篡改操做後再進行發送。不管你是要重現網絡異常形成的程序錯誤,仍是評估你的應用程序在不良網絡情況下的表現,clumsy 都能讓你在不須要額外添加代碼的狀況下,在系統層次幫你達到想要的效果:html
特點:git
下面的動畫展現了 clumsy 做用於一個本地的基於 netcat 的 UDP 服務器/客戶端的狀況。仔細觀察你能夠看到數據根據在 clumsy 的影響下產生了相應的變化。 若是你基本知道了 clumsy 是幹什麼用的,不妨到下載頁面選擇適用於你係統的版本進行下載。程序員
clumsy 首先根據用戶選擇的 filter 來攔截指定的網絡數據。在 filter 中能夠設定你感興趣的協議(tcp/udp),端口號,是接收仍是發出的端口。你也能夠經過簡單的邏輯語句來進一步縮小範圍。當 clumsy 被激活時,只有符合這些標準的網絡數據會被進行處理,而你不感興趣的數據仍然會由系統正常傳輸。github
當被 filter 的網絡數據包被攔截後,你能夠選擇 clumsy 提供的功能來有目的性的調整網絡狀況:緩存
儘管當前寬帶網絡鏈接十分普及,但網絡傳輸其自己在本質上總不是穩定的。若是你的應用程序中沒有應對各類狀況的處理,那麼有可能一個丟失的 UDP 包裹都會讓你的程序崩潰。正確的調試這類行爲 顯然須要再代碼結構上進行仔細的設計和處理,還會很花功夫。並且在某些封裝緊密的開發環境(Unity3D 自帶的網絡庫多是一個例子)下會更麻煩。clumsy 以儘量減輕程序員負擔爲目標, 但願提供一個簡單方便(但並不完美)的解決方案。服務器
項目的代碼能夠在github上獲取。在下載頁面有編譯好的版本。強烈建議在使用前花點時間閱讀一下文檔,來 瞭解 clumsy 的功能和限制。網絡