intel凌動微型主機板千兆網UDP接收資料除錯

2021-08-14 12:56:01 字數 987 閱讀 2524

intel凌動微型主機板,執行ubuntu系統,發行版長期維護版本14.04,接收外部利用udp傳送的每秒鐘20mb的資料,並儲存為200m的檔案,利用c編寫程式,開啟多執行緒進行處理,開始之初,資料丟包嚴重,每包資料都有丟失現象。

第一次修改,將接收和處理資料分離,單開執行緒接收資料,另外執行緒處理資料,問題有所改善,但還是丟包嚴;

第二次修改,將命令和資料分離,建立不同的udp服務,乙個負責接收命令,乙個負責接收資料,接收命令的執行緒接收資料後進行處理,不再為處理命令單開執行緒;負責接收資料的接收資料是乙個執行緒,處理資料是乙個執行緒;資料還是丟失;

第三次修改,增加程式執行的排程級別,利用nice命令,對程式的執行級別進行調整,調整後運**況有所好轉,但還是存在丟數現象,等待進一步優化;

第四次修改已經修改完成,等待測試結果;

注:udp接收資料,丟包現象應該是正常的,但還是看看到底能做到什麼程度,上面的每次修改都是乙個艱難的歷程,但每次都有不小的改觀,沒有什麼事情是注定,不要被自己那顆封閉的心抵擋前進的步伐。總共程式寫了不到500行**,協議比較簡單,積累資料,學習進步吧!

第二次補充:

丟包資料是很頭痛的事情,但是還是有解決方法的。在請教高手後,建議繞開協議棧,直接採用libpcap庫提供的函式進行抓包,在設定相應的接收快取,可以避免丟包。有了思路後就開始**的移植,開始在ubuntu進行測試,效果很差,同樣的**在mint可以執行很好,在ubuntu上一包資料都無法獲取。一怒之下,將甲方板子的系統更改為最新的fedora伺服器版,更改後系統自帶libpcap庫,只需要**在系統上編譯一下即可。程式更改完後遇到了乙個問題,手動執行可以抓包,而且基本不丟包,利用啟動指令碼開啟後,無法接收資料。腦子靈光一閃,想都沒想在啟動指令碼開始處加了10秒的延時,系統總算執行正常了,丟包的情況還有但不嚴重,之前高手說過還需要配置一下接收快取,將本來64k的快取更改為了1m,之後進行的測試沒有再出現丟包的現象,問題順利解決。

注:當遇到問題時,如果將自己封閉起來,是沒有一點好處的。這時候要放開心態,別人一句無心的話都有可能是我們解決問題的良藥。

Intel凌動平台嵌入式應用與實踐

intel凌動平台嵌入式應用與實踐 本書旨在提公升學生對所學專業基礎知識的綜合運用能力,學生通過本課程可以掌握intel 凌動平台的硬體結構,具備在典型的os 環境中綜合運用統一建模語言進行嵌入式軟體設計 程式設計 測試驗證等方面的能力。主要內容包括intel 凌動處理器的結構特點和最新動態,英特爾...

泰凌微 藍芽 8232

泰凌微電子藍芽8232 總覽 sdk,打補丁,編譯,工程架構,資料手冊 參考手冊 補丁包 軟體庫更新的一些東西,需要手動替換,比如補丁包中有printf.c 就用它替換sdk中的printf.c 2.編譯工程,切換工程,燒寫檔案 使用eclipse建好工作區,點選編譯,工具欄的錘子,或者快捷鍵ctr...

借力凌動英特爾殺回手機市場

英特爾的下一代凌動處理器將用於智慧型手機 去年idf最吸引我的是凌動,今年idf最吸引我的還是凌動,只是此凌動非彼凌動。英特爾透露下一代凌動處理器將通過降低功耗大舉進軍手機,這是凌動的一小步,卻是英特爾的一大步,英特爾藉此完成了一次從pc到手機的跨界。上週去北京參加idf 英特爾資訊科技論壇 同一天...