Lwip協(xié)議棧的實現(xiàn)目的,無非是要上層用來實現(xiàn)app的socket編程。好,我們就從socket開始。為了兼容性,lwip的socket應該也是提供標準的socket接口函數(shù),恩,沒錯,在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函數(shù)的實現(xiàn)【也是在src\api\socket.c文件中】,在這里我們看到這樣一條語句sock =&sockets[s];很明顯,返回值也是這個sock它是根據(jù)傳進來的序列號在sockets數(shù)組中找到對應的元素并返回該元素的地址。好了,那么這個sockets數(shù)組是在哪里被賦值了這些元素的呢?進行到這里似乎應該從標準的socket編程的開始,也就是socket函數(shù)講起,那我們就順便看一下。它對應的實際實現(xiàn)是下面這個函數(shù)Int Iwip socket(int domain,int type,int protocol)【src\api\socket.c】這個函數(shù)根據(jù)不同的協(xié)議類型,也就是函數(shù)中的type參數(shù),創(chuàng)建了一個netconn結構體的指針,接著就是用這個指針作為參數(shù)調(diào)用了alloc socket函數(shù),下面具體看下這個函數(shù)的實現(xiàn)
標簽:
lwip
底層結構
上傳時間:
2022-06-19
上傳用戶:aben