LWIP网络实验—RAW_UDP

7 篇文章 0 订阅
7 篇文章 1 订阅
  • 编程接口

LWIP有3种编程接口,分别为:RAW、NETCONN和SOCKET
  RAW:RAW编程接口不需要操作系统的支持,可以直接裸机使用LWIP,但是RAW编程接口比较复杂!RAW使用的是回调机制,需要大家了解回调函数。
  NETCONN和SOCKET:这两种编程接口都需要有操作系统的支持,否则的话没法使用,但是这两种接口使用起来比较简单。
  至于究竟使用哪一个就看自己的需求了,建议在实际项目中使用NETCONN或SOCKET编程接口,开发难度低。

  • UPD结构体

LWIP中使用UDP控制块来描述UDP,UDP控制块是UDP协议最核心的东西,UDP控制块是一个结构体,这个结构体在udp.h中定义。

struct udp_pcb 
{
    IP_PCB;	//宏IP_PCB中的各个字段
    struct udp_pcb 		*next;			//指向udp_pcb,用于将控制块组织成链表
    u8_t 				flags;			//控制块状态字段
    u16_t local_port, 	remote_port;  	//本地端口号和目的端口号
    udp_recv_fn 		recv;     		//处理数据的回调函数
    void 				*recv_arg;  	//传递给回调函数的参数
};

其中  IP_PCB; //宏IP_PCB中的各个字段

#define IP_PCB struct ip_addr local_ip; \  //本地ip地址
  struct ip_addr remote_ip; \  //远端ip地址
   /* Socket options */  \
  u16_t so_options;      \
   /* Type Of Service */ \
  u8_t tos;              \
  /* Time To Live */     \
  u8_t ttl;              \
  /* link layer address resolution hint */ \
  IP_PCB_ADDRHINT

UDP控制块链表如下:
在这里插入图片描述
UDP层函数关系如下图:
在这里插入图片描述

  • UDP数据的收发

void udp_demo_recv(void *arg,struct udp_pcb *upcb,struct pbuf *p,struct ip_addr *addr,u16_t port);
err_t udp_send(struct udp_pcb *pcb, struct pbuf *p);

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值