lwip初步描述文档

lwip初步描述文档

ID:40558310

大小:134.00 KB

页数:5页

时间:2019-08-04

lwip初步描述文档_第1页
lwip初步描述文档_第2页
lwip初步描述文档_第3页
lwip初步描述文档_第4页
lwip初步描述文档_第5页
资源描述:

《lwip初步描述文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、LwIP协议栈使用的简单介绍李广旭LWIP是TCP/IP协议栈的一种实现。LWIP的主要目的是减少存储器利用量和代码尺寸,使LWIP适合应用于小的、资源有限的处理器如嵌入式系统。为了减少处理器和存储器要求,lwIP可以通过不需任何数据拷贝的API进行裁减。在协议栈中,UDP协议面向无连接通信,网络设备在通信时,UDP数据拥有比TCP数据更高的优先通信权利,这点使得UDP数据在通信上更加的快速,由于UDP较为简单,输入和输出处理也较简单,如下图当需要发送数据报时,只需调用udp_send()函数即可,而udp_send()会适当的逐层逐级的调用接口函数来实

2、现数据报的发送。当收到一个UDP数据报时,IP层调用udp_input()函数。当发现相应的UDPPCB,udp_recv()函数被调用。由于UDP的简单、快速,使得其成为处理单片机TCP/IP非复杂通讯的首选协议。下面介绍一些使用UDP通讯的必要知识一.UDP是一个简单的协议,每一个UDP会话(session)的状态都被保留在一个PCB结构中。(进程控制块PCB,ProcessControlBlock)PCB结构体如下会用到的结构体成员有:·UDPPCB结构中包含一个指向全局UDPPCB链表中的下一个PCB的指针。·UDP会话(session)由IP地

3、址和端口号来定义,并且被存放在local_ip,dest_ip,local_port,dest_port域中。·当接收到由PCB标明的会话中的数据报(datagram)时,recv所指向的函数被调用。二.包缓冲器-pbufs。Pbuf在lwIP的内部表示一包,也是为了最小限度的使用栈这一特殊需要而设计。pbuf结构既支持分配动态内存来保存包内容,也支持把包数据存储在静态存储区。对于基本接口来说,多次用到了pbuf结构体,pbuf是lwIP信息包的内部表示,为最小限度协议栈的特殊需求而设计。pbuf有三种类型(宏定义):PBUF_RAM:为缓存分配了一块很

4、大的空间,并包含协议首部,数据存储在RAM中。PBUF_ROM:不分配缓存空间,数据部分已经固定在只读存储器中,数据存储在ROM中。PBUF_REF:不分配缓存空间,做单线程使用,或通过其他方法复制数据,数据区指向RAM。PBUF_POOL:缓冲池可以将pbuf连接成链表,数据来自缓冲池。pbuf结构体如下:structpbuf{structpbuf*next;//指向下一个结构体,用作链表时使用。void*payload;//指向实际数据区域。u16_ttot_len;//链表内结构体指向的数据总长度。u16_tlen;//本结构体指向的数据总长度。u

5、8_ttype;//类型:PBUF_RAM、PBUF_ROM、PBUF_REF、PBUF_POOLu8_tflags;//复合用标志位u16_tref;//被关联数(被其他指针或堆栈或应用程序所指向的数目)};主要使用的两个函数介绍structpbuf*pbuf_alloc(pbuf_layerlayer,u16_tlength,pbuf_typetype)说明:按照指定类型分配一个pbuf结构体。参数:layer有四种宏定义PBUF_TRANSPORT、PBUF_IP、PBUF_LINK、PBUF_RAW,可以指定首部大小;length数据部分大小(字

6、节数);type类型,按照上述四种种类型指定。返回:分配好的结构体指针。u8_tpbuf_free(structpbuf*p)说明:减少关联,如果减少到0,则释放其占用资源。参数:pbuf结构体。返回:减少关联的数目。三.LwIP协议栈基本函数:voidLwIP_Init(void)LwIP协议栈自带初始化,包括IP初始化和物理地址初始化,可进入进行相应的修改UDP接口函数:1.udp_new()说明:该函数用于建立一个用于UDP通信的UDP控制块(pcb),但是这个pcb并没有被激活,除非该pcb已经被绑定到一个本地地址上或者连接到一个固定地址的远程主

7、机。在定义一个udp_pcb控制块后该函数应该首先被调用,以建立该控制块的连接标志。功能:建立一个用于UDP通信的UDP控制块(pcb)原型:structudp_pcb*udp_new(void)参数:无返回:udp_pcb:建立的UDP连接的控制块(pcb)2.udp_remove()说明:该函数用于删除一个指定的连接,通常是控制块在建立成功后,即在函数udp_new()调用之后,当不需要该网络连接来通信了,就需要将其删除,以释放该连接(pcb)所占用的资源。功能:删除并释放掉一个udp_pcb原型:voidudp_remove(structudp_p

8、cb*pcb)参数:pcb:指定要删除的连接(pcb)返回:无3.udp_bin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。