IPerf是一個開源的測試網絡寬帶並能統計並報告延遲抖動、數據包丟失率信息的控制檯命令程序,經過參數選項能夠方便地看出,經過設置不一樣的選項值對網絡帶寬的影響,對於學習網絡編程仍是有必定的借鑑意義,至少能夠玩上一段時間。php
IPerf開始出現的時候是在03年,版本是1.7.0,在網上找到的僅有的系列源碼解析篇 http://blog.chinaunix.net/uid/11568125/cid-131106-abstract-1.html 就是基於1.7.0 進行介紹和解析的,貌似1.7.0仍是使用C++編寫比較多,後面到了IPerf2版本,C++和C結合,如今出來一個法國人團隊另起爐竈重構出不向下兼容的IPerf3,他們開了一個論壇專門討論維護,但由於是法語因此跟我也沒法溝通,因此也沒怎麼上去看,一開始入門的時候就只能上處連接的文章,還好有所幫助。html
如今IPerf的官方網站爲:https://iperf.fr/編程
IPerf的一些特性:服務器
IPerf的簡單使用示例:網絡
IPerf經過選項 -c 和 -s 決定其當前是做爲客戶端程序仍是做爲服務端程序運行,看成爲客戶端程序運行時,-c 後面必須帶所鏈接對端服務器的IP地址或域名多線程
上面圖片顯示三種信息:本地設置信息,鏈接信息,傳輸信息,究竟其在程序設計中是如何打印出來的,看完接下來的源碼解析但願你可以明白其中的原理 :)併發
下面列舉一些比較經常使用的選項參數,想要知道更多的選項參數,請查看官方網站的文檔說明學習
選項參數 說明測試
[客戶端]網站
-c host 以客戶端模式運行,鏈接到IPerf服務端運行的主機IP地址或域名
-t ; -i -t(timing)測試的時長;-i(interval)帶寬報告週期性顯示的間隔時間
-n 設置測試所發送的數據總量,#[KM] 覆蓋-t選項
-d, -L 雙向測試模式,客戶端與服務端創建雙向鏈接,並相互發送數據進行測試
-r, -L 交易模式,在客戶端到服務端的測試結束後,執行服務端到客戶端的測試
-P 設置客戶端同時鏈接到服務端的併發數(在多線程容許的條件下)
[服務端]
-s 以服務端模式運行,等待客戶端的鏈接請求
-D Unix平臺之後臺守護程序運行;Windows平臺下以服務形式運行
-w 設置TCP窗口大小或UDP接收緩衝區大小爲其指定的值