clumsy 模擬網絡丟包延遲


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 以盡可能減輕程序員負擔為目標,希望提供一個簡單方便(但並不完美)的解決方案。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM