请问以太网收数据时那个tcp_receive如何操作收到的数据?

2019-03-24 15:42发布

如题,tcp_receive()传入的参数只有一个pcb,那怎么操作缓冲区里收到的数据,调用什么?谢谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
suguoliu
2019-03-25 23:11
tcp_recv(pcb,App_recv);

tcp_recv()本身不是实际处理接收数据的函数,它需要指定一个应用层的接收数据函数(这里假如为App_recv,需要自己依据应用来编写)来处理接收到的数据。

p->payload字段中存储了数据。数据存放在这里。

处理完了之后要pbuf_free(p);

app_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
第一步:申明一个结构体,此结构体表征应用程的一些状态。
第二步:将回调函数的参数的指针arg赋值给该结构体。
第三步:调用tcp_recved(pcb, p->tot_len);确认数据的接受,其中包括了更新接收窗口。
第四步:对接收到的p->payload字段中数据进行提取,保存或其发送等等其它处理。
第五步:释放pbuf占用的rx buffer, pbuf_free(p);
第六步:tcp_sent(pcb, App_sent



这些同样适用于udp_recv函数,对吧?

一周热门 更多>

相关问题

    相关文章