lwip有
三套api
,分別是:
raw api
:使用方法為使用**函式,即先註冊乙個函式,當接受到資料之後呼叫這個函式。缺點是對於資料連續處理不好。
lwip api
:把接收與處理放在乙個執行緒裡面。
因為需要執行緒的概念,故需要作業系統,當然,
ucos雖然只有程序的概念,但是也可以用。
bsd api
:與unix相容,
移植容易,效率低。
附完整敘述大圖
咳,好了說正題,就是lwip
與硬體的介面,
lwip
與硬體的介面為乙個
netif結構體資料型別
,每乙個這樣的結構體代表乙個網絡卡。下面就是這個結構體的詳細結構:
其中next是指向下個網絡卡的資料結構,如果是單網絡卡,那
next
就為空。
input是乙個函式指標,指向我們寫的函式,這個函式的作用是接受底層硬體輸入的資料報注:
野火的接受資料方法為不斷執行ethernetif_input
函式,此函式實現如下:
其中low_level_input
為從底層接受資料並將其轉化為
pbuf
,netif->input
做的工作則是將其傳給上層的協議進行處理。
output也是乙個指標函式,指向用於向
ip層輸出的函式
linkoutput函式指向最底層網絡卡傳送資料報的函式
此外,其他屬性為ip
位址,子網掩碼,閘道器,
mac位址,最大傳輸單元,網絡卡允許使用的功能,網路介面的名字和編號等。
來自為知筆記(wiz)
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...
LwIP 網路介面管理
netif 各種型別網路介面的抽象 netif.c netif.h netif.h 網路介面最大實體地址長度,這裡定義為乙太網網絡卡 mac 位址的長度 6 define netif max hwaddr len 6u 下面幾個巨集為網路介面屬性 狀態相關的巨集,主要用於描述 netif 中 fla...
LwIP 網路介面管理
netif 各種型別網路介面的抽象 netif.c netif.h netif.h 網路介面最大實體地址長度,這裡定義為乙太網網絡卡 mac 位址的長度 6 define netif max hwaddr len 6u 下面幾個巨集為網路介面屬性 狀態相關的巨集,主要用於描述 netif 中 fla...