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