TCP Client 发送函数

2019-07-20 03:35发布

//此函数用来发送数据
void tcp_client_senddata(struct tcp_pcb *tpcb, struct tcp_client_struct * es)
{
        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;                        //指向下一个pbuf
                        if(es->p)pbuf_ref(es->p);        //pbuf的ref加一
                        pbuf_free(ptr);                                //释放ptr
                }else if(wr_err==ERR_MEM)es->p=ptr;
                tcp_output(tpcb);                //将发送缓冲队列中的数据立即发送出去
        }
}
我的问题
1:* es 的作用是什么?
//LWIP回调函数使用的结构体
struct tcp_client_struct
{
        u8 state;               //当前连接状
        struct tcp_pcb *pcb;    //指向当前的pcb
        struct pbuf *p;         //指向接收/或传输的pbuf
};  

2:es->p 指向什么条件?
3 :struct pbuf *ptr; 指的是什么?
4:else if(wr_err==ERR_MEM)es->p=ptr; 指的又是什么?
求大神指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
亦辰
1楼-- · 2019-07-20 09:14
 精彩回答 2  元偷偷看……
君仁知命
2楼-- · 2019-07-20 11:33
亦辰 发表于 2019-2-28 14:27
1,感觉你就是在问结构体的作用;
2,3,4,ptr是指向struct pbuf结构体类型的指针变量,es和p分别是struc ...

你好 ,请问 TCP Client 在发送 和 接收 同时进行时 为什么会出现 ERR = 0xFF 内存不足的错误?
亦辰
3楼-- · 2019-07-20 14:25
君仁知命 发表于 2019-2-28 14:34
你好 ,请问 TCP Client 在发送 和 接收 同时进行时 为什么会出现 ERR = 0xFF 内存不足的错误?

是触发了这个条件 if(wr_err==ERR_MEM) ?若是的话去看tcp_write()函数的说明
君仁知命
4楼-- · 2019-07-20 19:35
 精彩回答 2  元偷偷看……
亦辰
5楼-- · 2019-07-20 19:55
 精彩回答 2  元偷偷看……
君仁知命
6楼-- · 2019-07-20 21:47
亦辰 发表于 2019-2-28 15:56
可以啊  裸机的和带系统的都可以 你卡在哪个地方了?

方面吗?可以加个微信 或者扣扣吗?微信 :jk910510    我卡在 :用定时器 定时给 网络调试助手 发送数据 同时网络调试助手 给 stm32 发送数据 。现象 :stm32 能接收到数据,但是网络调试助手收不到开发板上传的数据; 在debug的调试下 err =0xFF ; 报的是 内存不足的错误 。   

一周热门 更多>