書籍:《嵌入式網路那些事-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...