初级会员
- 积分
- 99
- 金钱
- 99
- 注册时间
- 2016-12-6
- 在线时间
- 16 小时
|
30金钱
新手求教
Lwip tcp_output 后有没有清理tcp_write(,,,1)保存的数据,应用while循环tcp_write一段时间提示内存错误,也有更新函数
while(;i<ffff;i++){
wr_err = tcp_write(test_pcb, (uint32_t *)ps, plen, 1);
output_err = tcp_output(test_pcb);
tcp_recved(test_pcb, plen);
}有没有办法再设置一个清除数据的函数在while中自己清除,可以实现无限循环发送数据
(memset()只是清理应用层的,pbuf_free()清理链表申请的内存数据,memp_free()清理内核链表的数据?怎么样才可以清除write保存的数据,只有接受到ACK后自动清理?)
小弟不才,望大神指导!!!
|
最佳答案
查看完整内容[请看2#楼]
只能自己通过控制传输次数来清理write数据了,确保每次传输数据到达TCP_SND_BUF,TCP_SND_QUEUELEN值,应用send_buf(pcb)来确定还能够这次申请的内存,否则就会出现ERR_MEM,err_mem,各种问题,判断还能够申请下次发送的内存后继续下次发送,因为底层有检测数据发送情况,由于ERR_MEM问题就会对write在内核的数据进行删除,确保了下次传输正常进行,因为设置的poll时间500ms,自己跟踪代码好像是不需要这么久,底层有对数据发送的检 ...
|