??IPerf工具使用筆記(基于MobaXterm串口終端)?

??一、問題現象??

  1. ??終端輸入無響應??

    • 啟動iperf服務器后,終端被阻塞,無法輸入其他命令(如圖中重復輸出日志覆蓋輸入區域)。
    • ??直接原因??:iperf_server線程未正確處理退出標志,導致selectaccept長期阻塞。
  2. ??重復綁定端口日志??

    • 終端頻繁輸出本地端口號是5001,表明:
      • 服務器套接字未正確關閉,重復初始化。
      • 端口被其他進程占用(可能因異常退出導致)。
  3. ??無法通過iperf --stop終止服務??

    • 全局標志param.mode未觸發線程退出循環。
??二、根本原因??
  1. ??代碼邏輯缺陷??

    • iperf_serverselect調用阻塞時間過長(默認3秒),未及時檢測退出標志。
    • 未強制關閉套接字,導致線程卡在acceptselect
  2. ??資源未釋放??

    • 異常退出時,套接字未關閉,端口未釋放,重啟時觸發bind錯誤。
  3. ??終端配置問題??

    • MobaXterm未啟用本地回顯(Local Echo),輸入內容被日志覆蓋。
??三、解決方案??
??1. 代碼修復(關鍵修改)??
// 修改iperf_server循環邏輯
void iperf_server(void *thread_param) {struct timeval timeout;timeout.tv_sec = 1;  // 縮短超時時間至1秒while (param.mode != IPERF_MODE_STOP) {// 每次循環重置超時timeout.tv_sec = 1;FD_SET(sock, &readset);ret = select(sock + 1, &readset, NULL, NULL, &timeout);if (ret == -1 || param.mode == IPERF_MODE_STOP) break;  // 及時退出// 處理連接...}// 強制關閉套接字(避免阻塞)if (sock >= 0) {shutdown(sock, SHUT_RDWR);closesocket(sock);}
}
??2. 命令行操作??
操作命令說明
??啟動服務器??iperf -s -p 5001 &&后臺運行,避免阻塞終端
??停止服務器??iperf --stop?或?killall iperf全局標志觸發退出或強制終止進程
??驗證端口監聽??`netstat -angrep 5001`
??3. MobaXterm配置??
  1. ??啟用本地回顯??

    • 右鍵終端 → ??Settings?? → ??Terminal?? → 勾選:
      • ? ??Local echo??
      • ? ??Local line editing??
  2. ??串口參數??

    • 波特率:115200
    • 數據位:8,停止位:1,無流控
    • 設備路徑:COM7 (USB-SERIAL CH340)(需根據系統識別調整)
??四、操作流程??
  1. ??啟動服務器??

    iperf -s -p 5001 &  # 后臺啟動
    • ??預期輸出??:[1] 12345(進程ID)和單次本地端口號是5001
  2. ??客戶端測試??
    在其他設備執行:

    iperf -c 192.168.16.112 -p 5001  # 替換為MCU的IP
    • ??成功標志??:服務端打印客戶端連接信息及帶寬。
  3. ??終止服務器??

    iperf --stop  # 或 kill -9 [進程ID]
    • ??驗證??:ps | grep iperf無結果,netstat顯示端口釋放。
??五、注意事項??
  1. ??硬件連接??

    • 確保USB轉串口線(CH340)穩定連接,避免頻繁插拔導致COM口失效。
  2. ??線程優先級??

    • 調整RTOS線程優先級,避免iperf占用過高優先級阻塞終端任務:
      sys_thread_new("iperf", iperf_server, NULL, 2048, 3);  // 優先級設為3(低于默認)
  3. ??內存泄漏??

    • 使用pvPortMallocvPortFree確保內存釋放,添加分配失敗檢查:
      if (!send_buf) {printf("內存不足!\n");return;
      }

??六、故障排查表??
現象檢查點解決措施
終端輸入無響應是否后臺運行?jobs命令查看使用fg切前臺后Ctrl+C終止
端口綁定失敗端口是否被占用?netstat檢查更換端口或重啟設備
客戶端無法連接防火墻/路由設置,IP是否正確關閉防火墻,檢查子網掩碼

通過以上整理,可系統化解決iperf在MobaXterm串口終端中的使用問題,確保服務器可控運行及終端輸入正常。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76803.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【從C到C++的算法競賽遷移指南】第五篇:現代語法糖精粹 —— 寫出優雅的競賽代碼

系列導航: [第一篇] 基礎語法與競賽優勢[第二篇] 動態數組與字符串革命[第三篇] 映射與集合的終極形態[第四篇] STL算法與迭代器[? 本篇] 現代語法糖精粹[第六篇] 競賽實戰技巧 一、范圍for循環:告別索引的束縛 1.1 C風格遍歷的四大痛點 // 痛點示例&…

mongodb在window10中創建副本集的方法

創建Mongodb的副本集最好是新建一個文件夾,如D:/data,不要在mongodb安裝文件夾里面創建副本集,雖然這樣也可以,但是容易造成誤操作或路徑混亂;在新建文件夾里與現有 MongoDB 數據隔離,避免誤操作影響原有數…

使用Python進行AI圖像生成:從GAN到風格遷移的完整指南

AI圖像生成是一個非常有趣且前沿的領域,結合了深度學習和計算機視覺技術。以下是一些使用Python和相關庫進行AI圖像生成的創意和實現思路: 1. 使用GAN(生成對抗網絡) 基本概念:GAN由兩個神經網絡組成:生成…

P10413 [藍橋杯 2023 國 A] 圓上的連線

題意: 給定一個圓,圓上有 n2023 個點從 1 到 n 依次編號。 問有多少種不同的連線方式,使得完全沒有連線相交。當兩個方案連線的數量不同或任何一個點連接的點在另一個方案中編號不同時,兩個方案視為不同。 答案可能很大&#x…

鴻蒙5.0 非桌面頁面,設備來電后掛斷,自動返回桌面

1.背景 其實在Android上面打開一個應用,然后設備來電后掛斷應該是返回到前面打開的這個應用的,但是在鴻蒙里面現象是直接返回桌面,設計如此 2.分析 這個分析需要前置知識,鴻蒙的任務棧頁面棧,具體參考如下鏈接: zh-cn/application-dev/application-models/page-missio…

智能Todo協作系統開發日志(二):架構優化與安全增強

📅 2025年4月14日 | 作者:Aphelios380 🌟 今日優化目標 在原Todo單機版基礎上進行三大核心升級: 組件化架構改造 - 提升代碼可維護性 本地數據加密存儲 - 增強隱私安全性 無障礙訪問支持 - 踐行W3C標準 一、組件化架構改造 …

linux電源管理(二),內核的CPUFreq(DVFS)和ARM的SCPI

更多linux系統電源管理相關的內容請看:https://blog.csdn.net/u010936265/article/details/146436725?spm1011.2415.3001.5331 1 簡介 CPUFreq子系統位于drivers/cpufreq目錄下,負責進行運行過程中CPU頻率和電壓的動態調整,即DVFS (Dynami…

mysql 數據庫localhost密碼忘記

使用此查詢語句: SELECT user, authentication_string FROM mysql.user WHERE user root; 復制對應的密碼: 密碼是通過md5加密后的 md5在線解密破解,md5解密加密 將密碼輸入進來 就可以直接破解了

05、Docker run命令實戰:數據卷與掛載的完整指南(下)

5.1、深度剖析 docker run 命令:原理闡釋與數據持久化實踐探究 1、更換國內yum源2、更換國內docker源3、卸載舊版docker4、docker安裝5、鏡像加速器6、鏡像下載7、docker run命令交互式啟動-it非交互式后臺運行其他參數mysql綜合案例8、持久化存儲目錄掛載數據卷掛載數據同步1…

macOS 上使用 Homebrew 安裝和配置 frp 客戶端

macOS 上使用 Homebrew 安裝和配置 frp 客戶端 (frpc) 指南 frp (Fast Reverse Proxy) 是一款高性能的反向代理應用,常用于內網穿透。本文將介紹在 macOS 上使用 Homebrew 安裝 frpc,并進行配置和管理。 一、安裝 frpc 使用 Homebrew 安裝(…

泊松分布詳解:從理論基礎到實際應用的全面剖析

泊松分布詳解:從理論基礎到實際應用的全面剖析 目錄 引言:事件的罕見性與隨機計數泊松分布的歷史源流泊松分布的數學定義與性質 概率質量函數 (PMF)累積分布函數 (CDF)期望、方差與其他矩矩生成函數 (MGF) 與特征函數 (CF) 泊松分布的嚴格推導 極限推導…

紅寶書第三十六講:持續集成(CI)配置入門指南

紅寶書第三十六講:持續集成(CI)配置入門指南 資料取自《JavaScript高級程序設計(第5版)》。 查看總目錄:紅寶書學習大綱 一、什么是持續集成? 持續集成(CI)就像咖啡廳的…

python 辦公自動化------ excel文件的操作,讀取、寫入

一、excel文件的讀取 需要安裝的包:xlrd:讀取;xlwt:寫入;xlutils:分割、復制、篩選 sudo:表示以管理員身份運行命令(mac系統中使用) >sudo pip install xlrd xlwt x…

JAVA Web_定義Servlet2_學生登錄驗證Servlet

題目 頁面StudentLogin.html中有一HTML的表單代碼如下&#xff1a; <form action"studentLogin" method"post">學生姓名&#xff1a;<input type"text" name"stuName" value""><br>登錄密碼&#xff1a;…

爬蟲: 一文掌握 pycurl 的詳細使用(更接近底層,性能更高)

更多內容請見: 爬蟲和逆向教程-專欄介紹和目錄 文章目錄 一、PycURL概述1.1 PycURL介紹1.2 基本安裝1.3 安裝依賴(Linux/macOS)1.4 常用選項參考二、基本使用2.1 簡單 GET 請求2.2 獲取響應信息2.3 設置請求頭2.4 超時設置2.5 跟隨重定向三、高級功能3.1 POST 請求3.2 文件上…

利用 限制torch線程數與異步方法提升聲紋識別效率

引言 聲紋識別作為生物識別技術的重要分支,在安防、金融、智能助手等領域應用廣泛。隨著數據量的增長和應用場景的復雜化,提高聲紋識別效率成為關鍵問題。本文將詳細介紹如何通過 torch.set_num_threads 以及異步方法來優化聲紋識別的性能。 聲紋識別效率瓶頸分析 在聲紋…

軟考高級系統架構設計師-第12章 系統質量屬性與架構評估

【本章學習建議】 根據考試大綱&#xff0c;本章不僅考查系統架構設計師單選題&#xff0c;預計考11分左右&#xff0c;而且案例分析和論文寫作也是必考&#xff0c;對應第二版教材第8章&#xff0c;屬于重點學習的章節。 12.1 軟件系統質量屬性 12.1.1 質量屬性概念 軟件系…

SecProxy - 自動化安全協同平臺

本人為甲方安全人員&#xff0c;從事甲方工作近6年&#xff1b;針對在甲方平時安全工作的一些重復、復雜、難點的工作&#xff0c;思考如何通過AI、腳本、或者工具實現智能且自動化&#xff0c;于是花平時空閑時間準備將這些能力全部集中到一個平臺&#xff0c;于是有了這個東西…

CSI-external-provisioner

main() 這段Go代碼是一個CSI&#xff08;容器存儲接口&#xff09;Provisioner&#xff08;供應器&#xff09;的實現&#xff0c;用于在Kubernetes集群中動態提供持久卷。代碼涉及多個組件和步驟&#xff0c;下面是對關鍵部分的解釋&#xff1a; 初始化和配置 命令行標志和…

react中通過 EventEmitter 在組件間傳遞狀態

要在 Reply 組件中通過 statusChangeEvent 發送狀態值&#xff0c;并在 Select 組件中接收這個狀態值 status&#xff0c;你可以按照以下步驟實現&#xff1a; //Event.jsimport EventEmitter from events;export const statusChangeEvent new EventEmitter();// 工單狀態切換…