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).

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

相关文章

Linux中的ARP防火墙主要用于防御ARP欺骗攻击,其效果取决于多...
insmod和modprobe加-f参数导致Invalid module format错误 这...
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安...
1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...