lwip可以用于发udp_LWIP中 udp_send(upcb, p); 之后马上调用 pbuf_free(p); 行么 ?

针对这个问题,我也研究看了一些实例,语句可以联用,再给你个实例参考看看吧

if(flag) //your own flag to trigger event

{

pudp_buf = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM);

if(pudp_buf)

{

IP4_ADDR(&dest_ip, alarm_ip[0],alarm_ip[1],

alarm_ip[2],alarm_ip[3]);

memcpy(pudp_buf->payload,temp_out_buf,len);

err=udp_sendto(udp_comm_pcb,pudp_buf,&dest_ip,TCP_COMM_PORT);//Port to send

pbuf_free(pudp_buf);

if(err)

printf("udp_sendto err!\n");

}

}

另外有比较长的代码也可以参考下别人的用法基于LWIP的UDP实例

本工程硬件基于STM32F429+LAN8720A外设,使用RMII通信接口。工程由STM32CUBEMX直接生成。代码主要使用的是ST官方例程。

1. 服务器端

//定义端口号

#define UDP_SERVER_PORT    7   /* define the UDP local connection port */

#define UDP_CLIENT_PORT    7   /* define the UDP remote connection port */

//声明接收数据回调函数,在初始化函数中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lwip 是一个用于嵌入式系统的轻量级 IP 协议栈,udp_send 函数用于UDP 数据报。你可以调用 udp_send 函数来UDP 数据报,该函数的原型如下: ``` err_t udp_send(struct udp_pcb *pcb, struct pbuf *p); ``` 其,`pcb` 是指向 udp_pcb 结构体的指针,表示 UDP 协议控制块。`p` 是指向 pbuf 结构体的指针,表示要送的数据。该函数将会把 `p` 的数据送出去。 需要注意的是,调用 udp_send 函数之前,你需要先创建一个 udp_pcb 结构体,并通过 udp_bind 函数绑定到特定的端口上。同时,你还需要设置远程主机的 IP 地址和端口号。 以下是一个示例代码片段,展示了如何使用 lwipudp_send 函数UDP 数据报: ```c #include <lwip/udp.h> // 创建 udp_pcb 结构体 struct udp_pcb *pcb; pcb = udp_new(); // 设置远程主机的 IP 地址和端口号 ip_addr_t remote_ip; IP_ADDR4(&remote_ip, 192, 168, 0, 2); u16_t remote_port = 12345; // 绑定到本地端口 udp_bind(pcb, IP_ADDR_ANY, 0); // 构造要送的数据 const char *data = "Hello, UDP!"; int data_len = strlen(data); // 创建 pbuf 结构体 struct pbuf *p; p = pbuf_alloc(PBUF_TRANSPORT, data_len, PBUF_RAM); memcpy(p->payload, data, data_len); // UDP 数据报 udp_sendto(pcb, p, &remote_ip, remote_port); // 释放 pbufudp_pcb pbuf_free(p); udp_remove(pcb); ``` 以上代码创建了一个 udp_pcb 结构体,设置了远程主机的 IP 地址和端口号,并绑定到本地端口。然后,通过 pbuf_alloc 函数创建一个 pbuf 结构体,并将要送的数据复制到 payload 。最后,调用 udp_sendto 函数UDP 数据报,并在送完成后释放 pbufudp_pcb。 希望能帮到你!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值