1. 程式人生 > >SylixOS 網路協議棧lwip介紹2-----UDP資料傳送流程

SylixOS 網路協議棧lwip介紹2-----UDP資料傳送流程

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

 

傳送流程圖如下: