Lwip協議棧的實現目的,無非是要上層用來實現app的socket編程。好,我們就從socket開始。為了兼容性,lwip的socket應該也是提供標準的socket接口函數,恩,沒錯,在src\inc lude\lwip\socket.h文件中可以看到下面的宏定義:#if LWIP COMPAT SOCKETS#define accept(a,b,c)Iwip accept(a,b,c)#define bind(a,b,c)Iwip bind(a,b,c)#define shutdown(a,b)Iwip shutdown(a,b)#define closesocket(s)Iwip close(s)好,這個結構先不管它,接著看下get socket函數的實現【也是在src\api\socket.c文件中】,在這里我們看到這樣一條語句sock =&sockets[s];很明顯,返回值也是這個sock它是根據傳進來的序列號在sockets數組中找到對應的元素并返回該元素的地址。好了,那么這個sockets數組是在哪里被賦值了這些元素的呢?進行到這里似乎應該從標準的socket編程的開始,也就是socket函數講起,那我們就順便看一下。它對應的實際實現是下面這個函數Int Iwip socket(int domain,int type,int protocol)【src\api\socket.c】這個函數根據不同的協議類型,也就是函數中的type參數,創建了一個netconn結構體的指針,接著就是用這個指針作為參數調用了alloc socket函數,下面具體看下這個函數的實現
標簽:
lwip
底層結構
上傳時間:
2022-06-19
上傳用戶:aben