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; 指的又是什么?
求大神指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。