c – 我正在使用tcp进行很多小发送,我应该关闭Nagles算法吗? (人们也知道这是TCP_NODELAY)

前端之家收集整理的这篇文章主要介绍了c – 我正在使用tcp进行很多小发送,我应该关闭Nagles算法吗? (人们也知道这是TCP_NODELAY)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我重新发布这篇文章,因为我的标题选择太可怕了,抱歉.我的新帖子可以在这里找到:After sending a lot,my send() call causes my program to stall completely. How is this possible?

非常感谢大家.问题是客户端实际上是机器人,他们从不从连接中读取. (感到愚蠢)

最佳答案
TCP_NODELAY可能有助于从发送方到接收方的小数据包的延迟,但您给出的描述指向不同的方向.我可以想象以下内容

>发送的数据多于接收者实际消耗的数据 – 这最终会溢出发送者的缓冲区(SO_SNDBUF)并导致服务器进程在send(2)系统调用显示“卡住”.此时,内核等待另一端确认一些未完成的数据,但是接收器不期望它,所以它不是recv(2).

可能还有其他解释,但如果不看代码就很难说清楚.

原文链接:https://www.f2er.com/linux/440119.html

猜你在找的Linux相关文章