//此函数用来发送数据
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; 指的又是什么?
求大神指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
你好 ,请问 TCP Client 在发送 和 接收 同时进行时 为什么会出现 ERR = 0xFF 内存不足的错误?
一周热门 更多>