lwip協議棧學習 udp

2022-05-28 13:45:14 字數 1327 閱讀 2964

書籍:《嵌入式網路那些事-lwip協議》

udp協議的優點:

1)基於ip協議,無連線的使用者資料報協議,適用於傳送大批量資料,

2)實時性比較高,適用於嵌入式網路

udp_sendto通過呼叫函式udp_sendto_if完成報文的組裝和傳送,在呼叫udp_sendto_if之前,與ip層進行互動操作,機呼叫ip_route為報文尋找乙個網路介面結構,這個結構記錄了整個系統的有效ip位址

報文接收函式

udp_input被呼叫處理報文,主要進行報文合法性檢測,根據報文埠資訊查詢匹配的udp控制塊,並把報文資料遞交給控制塊中註冊的使用者自定義函式處理。

udp程式設計介面,採用**函式的方式,優點-程式設計簡單,只需要繫結對應ip和埠後,編寫自己的處理函式,然後通過udp_recv函式註冊使用者的**函式。不過採用**方式程式設計存在缺陷,使用者應用程式和協議棧核心處於同一程序中,使用者程式通過**的方式執行,在使用者程式執行的過程中,核心程序處於阻塞狀態,如果使用者程式比較大,處理時間較長,協議棧核心**得不到執行,協議棧接收,處理新資料報效率會受到直接的影響。最嚴重的後果,如果傳送方的資料報傳送速率很快,協議棧會因為來不及處理而出現丟包的情況。

**方式程式設計的基本框架:

系統時鐘更新

systemcoreclockupdate();

初始化mac層,

chip_enet_init(lpc_ethernet);

使能系統滴答定時器

systick_enable(1);

初始化lwip協議棧

lwip_init();

初始化本機ip

ip4_addr(&gw, 192,168,1,1);//閘道器位址

ip4_addr(&ipaddr, 192,168,1,37);//本機ip位址

ip4_addr(&netmask, 255, 255, 255, 0);//子網掩碼

註冊網路介面

netif_add(&lpc_netif, &ipaddr, &netmask, &gw, null, lpc_enetif_init,ethernet_input);

netif_set_default(&lpc_netif);

netif_set_up(&lpc_netif);

啟動dhcp功能

dhcp_start(&lpc_netif);

申請乙個udp控制塊

upcb = udp_new();

繫結到本地埠

udp_bind(upcb,ip_addr_any,udp_echo_port);

註冊使用者報文處理函式

udp_recv(upcb,udp_demo_callback,null);

LWIP協議棧學習 一 ARP協議

arp所實現的功能就是通過ip位址獲取到mac位址,並且將ip和mac對映到一起,儲存到arp表中.dest mac src mac frame type hardware type protocol type hardware addr len protocol addr len opsend m...

LWIP架構及LWIP協議棧

1 不管是裸機還是os 都分為三個模組 上層協議棧 包括發資料 收資料下面只考慮收資料在中斷中.os 這三者之間是 通過 mbox 通訊 sem 同步的.這三者分別屬於三個執行緒 其中乙個是中斷 裸機三者之間是通過函式呼叫實現的,這三者在同乙個執行緒內.其中乙個是中斷 2 上層 協議棧 收資料之間的...

LwIP協議棧介面

協議棧api函式 1 netconn new udp tcp struct netconn netconn new enum netconn type t 為新連線申請乙個連線結構netconn空間 2 netconn delete udp tcp err t netconn delete stru...