Tag:

listen()忽略积压参数?

我有以下问题: 我有sockfd = socket(AF_INET, SOCK_STREAM, 0) 当我build立并绑定套接字(比如sockfd.sin_port = htons(666) )后,我立刻做了: listen(sockfd, 3); sleep(50); // for test purposes 我睡了50秒来testing积压参数,这似乎被忽略,因为我可以build立连接*在端口666上超过3次。 *:我的意思是,我从每个从客户端发送的第N个SYN(n> 3)获得一个syn / ack,并放入监听队列中,而不是被丢弃。 什么可能是错的? 我读过listen(2)和tcp(7)的man页面,发现: Linux套接字上的backlog参数的行为随Linux 2.2而改变。 现在它指定了等待被接受的完全build立的套接字的队列长度,而不是不完整的连接请求的数目。 不完整套接字队列的最大长度可以使用/ proc / sys / net / ipv4 / tcp_max_syn_backlog来设置。 当启用syncookies时,没有逻辑最大长度,这个设置被忽略。 有关更多信息,请参阅tcp(7)。 ,但即使使用sysctl -w sys.net.ipv4.tcp_max_syn_backlog=2和sysctl -w net.ipv4.tcp_syncookies=0 ,我仍然得到相同的结果! 我一定是错过了一些东西,或者完全误解了listen()的积压目的。