LWIP 使用tcp_write()和tcp_output不能高频率向外发送数据?

2019-12-20 21:36发布

协议栈移植的LWIP 1.4.1 ,TCP Client。在使用过程中发现,不管在应用程序里面以多大的频率来调用tcp_write() 和 tcp_output来实现数据的发送,接收到的数据总是将几帧数据打包在一起发送出来,发送的频率还比较稳定为200ms左右。tcp_write是将数据写入缓存,tcp_output不就将数据直接发送出来了吗?为什么会出现几帧打包在一起再发送的情况呢?请教各位路过的大神,这个是什么原因呢?

应该不是需要将缓存写到一定数量再发送,感觉就是周期性的发送,会不会是轮训或者其他周期性的执行,对LWIP的内核不是很理解,因此请教各位大神,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
hswkcg
1楼-- · 2019-12-22 00:10
落叶知秋 发表于 2018-3-29 15:05
nagle处理对应每个连接的tpcb,关闭也对应每个连接tpcb

你可以在初始化tpcb的时候选择是否把TCP_NODELAY ...

屏蔽只是是验证一下~~~

非常感谢!!!
gsq19920418
2楼-- · 2019-12-22 06:04
 精彩回答 2  元偷偷看……
无衣师伊
3楼-- · 2019-12-22 06:35
ARP没5S就挂起一次。每10S就删掉ARP
IP层写数据时是挂在ARP链表的指针里面。ARP解释完再发数据的。
hswkcg
4楼-- · 2019-12-22 09:45
gsq19920418 发表于 2018-3-29 15:58
调周期!!!!!!!

调周期是什么意思?哪个的周期?
gsq19920418
5楼-- · 2019-12-22 11:44
hswkcg 发表于 2018-3-30 09:00
调周期是什么意思?哪个的周期?

#define TCP_FAST_INTERVAL
TCP_TMR_INTERVAL
gsq19920418
6楼-- · 2019-12-22 14:18
看下lwip的执行逻辑,他是属于一个单独的线程,默认是,每200MS处理一次接收和发送

一周热门 更多>