SylixOS 网络协议栈lwip介绍2-----UDP数据发送流程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stone8761/article/details/80840959

UDP数据包的发送是通过sendto()发起的(其他接口类似),整体实现流

程如下:

(1)    通过文件描述符fd获取文件结构,并提取lwipfd。再通过lwipfd从socket表中获取socket结构。Socket结构中包含了此udp链接中的connect信息;

(2)    使用netbuf_alloc(),创建netbuf结构,这其中包含了pbuf结构。向这个结构导入需要发送的数据;

(3)    Netbuf结构最终会传入udp_send()或udp_sendto(),这其中会通过ip_route()确定最终需要发送的网卡结构netif;

(4)    Udp_sendto_if_src()添加udp包头;

(5)    If_output_if_src()添加IP包头;

(6)    根据网卡结构netif获取发送接口netdev_netif_linkoutput(),最终调用网卡发送函数dm9000_transmit();

发送流程图如下:



猜你喜欢

转载自blog.csdn.net/stone8761/article/details/80840959