//此函数用来发送数据
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 内存不足的错误?
是触发了这个条件 if(wr_err==ERR_MEM) ?若是的话去看tcp_write()函数的说明
方面吗?可以加个微信 或者扣扣吗?微信 :jk910510 我卡在 :用定时器 定时给 网络调试助手 发送数据 同时网络调试助手 给 stm32 发送数据 。现象 :stm32 能接收到数据,但是网络调试助手收不到开发板上传的数据; 在debug的调试下 err =0xFF ; 报的是 内存不足的错误 。
一周热门 更多>