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();

 

发送流程图如下:


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

相关文章:

  • 2021-11-16
  • 2021-05-16
  • 2021-05-26
  • 2021-08-28
  • 2021-05-15
  • 2021-09-24
  • 2021-10-08
猜你喜欢
  • 2021-12-07
  • 2021-07-02
  • 2021-08-15
  • 2022-12-23
  • 2021-07-27
  • 2021-11-16
  • 2022-12-23
相关资源
相似解决方案