Lwip lwip_recvfrom函数一个数据包不能分多次读取。

时间:2023-03-09 15:37:44
Lwip lwip_recvfrom函数一个数据包不能分多次读取。

  最近在写一个基于Lwip协议栈的网络程序,对于一包数据,想先获得包头信息,再根据包头信息读取后面的数据,但是调用recvfrom后,发现读取后面的数据读取不到,进一步查阅发现,原来对于UDP协议,一次读取完毕后,buf中存放的数据被清除。要想从中正确读取所有的数据有两种方法:

1.知道一包数据长度,直接全部读出。

2.读取函数的参数中引入MSG_PEEK,先尝试读取一些数据,然后读出全部数据。