硬汉嵌入式论坛

 找回密码
 立即注册
查看: 564|回复: 1
收起左侧

[LwIP] 连续调用tcpwrite+tcp_output发送后内存溢出

[复制链接]

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2023-4-16 17:31:56 | 显示全部楼层 |阅读模式
有没有谁使用过lwip连续高速发送啊,我这边板子作为tcp client客户端,需要连续不断往电脑server发送数据,因为需要立即发送,使用的tcpwrite+tcp_output函数,但是连续发送一段时间后就会卡死,开启调试打印后发现内存申请失败。然后我试着降低发送频率后,就可以持续发送了,但是目前能够维持稳定发送的速度只有几十KB。



发送部分代码如下

        struct pbuf *ptr;
        err_t wr_err=ERR_OK;
        while((wr_err==ERR_OK)&&es->p&&(es->p->len<=tcp_sndbuf(tpcb)))
        {
                ptr=es->p;
                wr_err=tcp_write(tpcb,ptr->payload,ptr->len,1);
                if(wr_err==ERR_OK)
                {  
                        es->p=ptr->next;                       
                        if(es->p)pbuf_ref(es->p);       
                        pbuf_free(ptr);                               
                }else if(wr_err==ERR_MEM)es->p=ptr;
                tcp_output(tpcb);               
        }

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106553
QQ
发表于 2023-4-17 01:09:14 | 显示全部楼层
lwip的原始API玩起来太费劲。锁定下发送成功后标志是那个,一定要保证收到服务器应答后再开始新的发送。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-24 19:51 , Processed in 0.222528 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表