模擬網絡情況工具——clumsy

官網:http://jagt.github.io/clumsy/index.html

html

官網上的介紹已經很易懂了,因此本文只是直接翻譯了官網內容。git

 

clumsy 能在 Windows 平臺下人工形成不穩定的網絡情況,方便你調試應用程序在極端網絡情況下的表現。程序員

簡介

利用封裝 Winodws Filtering Platform 的WinDivert 庫, clumsy 能實時的將系統接收和發出的網絡數據包攔截下來,人工的形成延遲,掉包和篡改操做後再進行發送。不管你是要重現網絡異常形成的程序錯誤,仍是評估你的應用 程序在不良網絡情況下的表現,clumsy 都能讓你在不須要額外添加代碼的狀況下,在系統層次幫你達到想要的效果:github

特點:        緩存

  • 下載即用,不須要安裝任何東西。服務器

  • 不須要額外設置,不須要修改你的程序的代碼。網絡

  • 系統級別的網絡控制,能夠適用於命令行,圖形界面等任何 Windows 應用程序。tcp

  • 不單單隻支持 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 以儘量減輕程序員負擔爲目標,但願提供一個簡單方便(但並不完美)的解決方案。

相關文章
相關標籤/搜索