- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下问题:
我有sockfd = socket(AF_INET, SOCK_STREAM, 0)
设置并绑定(bind)套接字后(假设使用 sockfd.sin_port = htons(666)
),我立即执行以下操作:
listen(sockfd, 3);
sleep(50); // for test purposes
我睡了 50 秒来测试 backlog 参数,这似乎被忽略了,因为我可以在端口 666 上建立连接* 3 次以上。
*:我的意思是,我为从客户端发送的每个第 N 个 SYN (n>3) 获取一个 syn/ack,并将其放入监听队列中,而不是被丢弃。可能出什么问题了?我阅读了listen(2)和tcp(7)的手册页并发现:
The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it specifies the queue length for completely established sockets waiting to be accepted, instead of the number of incomplete connection requests. The maximum length of the queue for incomplete sockets can be set using /proc/sys/net/ipv4/tcp_max_syn_backlog. When syncookies are enabled there is no logical maximum length and this setting is ignored. See tcp(7) for more information.
,但即使使用 sysctl -w sys.net.ipv4.tcp_max_syn_backlog=2
和 sysctl -w net.ipv4.tcp_syncookies=0
,我仍然得到相同的结果结果!我一定是遗漏了一些东西,或者完全误解了 listen()
的积压工作目的。
最佳答案
listen()
的 backlog 参数只是建议性的。
The backlog argument provides a hint to the implementation which the implementation shall use to limit the number of outstanding connections in the socket's listen queue.
当前版本的 Linux 内核将其四舍五入到下一个最高的 2 次方,最小为 16。相关代码位于 reqsk_queue_alloc() .
关于c - Listen() 忽略积压参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60034060/
我正在我的从机上运行此查询。 查询: 从审核中选择 ID,其中 app='accounts' 解释输出 +----+-------------+-----------------+------
我是一名优秀的程序员,十分优秀!