最近在寫一個基於Lwip協議棧的網絡程序,對於一包數據,想先獲得包頭信息,再根據包頭信息讀取后面的數據,但是調用recvfrom后,發現讀取后面的數據讀取不到,進一步查閱發現,原來對於UDP協議,一次讀取完畢后,buf中存放的數據被清除。要想從中正確讀取所有的數據有兩種方法:
1.知道一包數據長度,直接全部讀出。
2.讀取函數的參數中引入MSG_PEEK,先嘗試讀取一些數據,然后讀出全部數據。
最近在寫一個基於Lwip協議棧的網絡程序,對於一包數據,想先獲得包頭信息,再根據包頭信息讀取后面的數據,但是調用recvfrom后,發現讀取后面的數據讀取不到,進一步查閱發現,原來對於UDP協議,一次讀取完畢后,buf中存放的數據被清除。要想從中正確讀取所有的數據有兩種方法:
1.知道一包數據長度,直接全部讀出。
2.讀取函數的參數中引入MSG_PEEK,先嘗試讀取一些數據,然后讀出全部數據。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。