• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

lwIP第十一章UDP协议

武飞扬头像
Eiker_3169
帮助5

一、UDP协议报文结构

学新通

PACK_STRUCT_BEGIN 
struct udp_hdr 
{ 
	PACK_STRUCT_FIELD(u16_t src); 		/* 源端口号 */ 
	PACK_STRUCT_FIELD(u16_t dest); 	/* 目的端口号 */ 
	PACK_STRUCT_FIELD(u16_t len); 		/* UDP长度 */ 	PACK_STRUCT_FIELD(u16_t chksum); 	/* 校验和 */ 
} PACK_STRUCT_STRUCT; 
PACK_STRUCT_END

二、UDP数据递交流程

学新通

三、UDP控制块结构

接收数据时,lwIP内核把数据递交给UDP控制块recv函数指针指向的函数

学新通

struct udp_pcb 
{ 
	IP_PCB; 							/* 通用IP控制块 */ 
	struct udp_pcb *next; 				/* 下一节点的指针,用于构成控制块链表 */ 
	u8_t flags; 						/* 控制块状态 */ 
	u16_t local_port, remote_port; 		/* 本地端口号、远程端口号 */ 
	udp_recv_fn recv; 					/* 处理网络接收数据的回调 */ 
	void *recv_arg; 					/* 用户自定义参数,接收回调入参 */ 
};

四、UDP控制块原理

链接: 多个UDP控制块构建一个单向的链表

函数: 每一个控制块都管理一个接收回调函数

端口: lwIP内核根据端口号查找控制块

描述: 每一个控制块用来描述各自网络的信息

学新通
在UDP编程中,无论是那种接口,它们都是对UDP控制块进行操作

dup_pcb链表挂载多个控制块,数据包递交给“谁”处理?
遍历udp_pcbs链表,检查其中的本地端口号与报文首部中的目的端口号是否匹配,并递交给匹配成功的控制块处理

五、RAW接口简介

学新通
学新通

RAW接口UDP函数
学新通

六、RAW接口的UDP连接流程

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfibghe
系列文章
更多 icon
同类精品
更多 icon
继续加载