协议栈移植的LWIP 1.4.1 ,TCP Client。在使用过程中发现,不管在应用程序里面以多大的频率来调用tcp_write() 和 tcp_output来实现数据的发送,接收到的数据总是将几帧数据打包在一起发送出来,发送的频率还比较稳定为200ms左右。tcp_write是将数据写入缓存,tcp_output不就将数据直接发送出来了吗?为什么会出现几帧打包在一起再发送的情况呢?请教各位路过的大神,这个是什么原因呢?
应该不是需要将缓存写到一定数量再发送,感觉就是周期性的发送,会不会是轮训或者其他周期性的执行,对LWIP的内核不是很理解,因此请教各位大神,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
nagle处理对应每个连接的tpcb,关闭也对应每个连接tpcb
你可以在初始化tpcb的时候选择是否把TCP_NODELAY的标志清掉,自己写个函数,或者直接在初始化流程里处理
还有,不要以屏蔽代码的方式来解决这个问题
正解!我把tcp_output中关于nagle的判断屏蔽掉就解决了。
但是,还有点不清楚的地方请教您一下,如果我关闭nagle是所有的连接都关闭了吗?还是窝关闭哪个连接的时候就把该链接的 tpcb->flags & TF_NODELAY 就可以?nagle关闭的正确方式是什么呢?
一周热门 更多>