listen () ignora el argumento de la acumulación?

Tengo el siguiente problema

Yo tengosockfd = socket(AF_INET, SOCK_STREAM, 0)

Después de configurar y vincular el zócalo (digamos consockfd.sin_port = htons(666)), Inmediatamente hago:

listen(sockfd, 3);

sleep(50); // for test purposes

Estoy durmiendo durante 50 segundos para probar el argumento de retraso, que parece ser ignorado porque puedo establecer una conexión * más de 3 veces en el puerto 666.

*: Lo que quiero decir es que obtengo un syn / ack por cada enésimo SYN (n> 3) enviado desde el cliente y colocado en la cola de escucha, en lugar de ser descartado. ¿Qué podría estar mal? Leí las páginas de manual de listen (2) y tcp (7) y encontré:

El comportamiento del argumento de la acumulación en los sockets TCP cambió con Linux 2.2. Ahora especifica la longitud de la cola para los sockets completamente establecidos que esperan ser aceptados, en lugar del número de solicitudes de conexión incompletas. La longitud máxima de la cola para sockets incompletos se puede establecer usando / proc / sys / net / ipv4 / tcp_max_syn_backlog. Cuando las syncookies están habilitadas, no hay una longitud máxima lógica y esta configuración se ignora. Consulte tcp (7) para obtener más información.

, pero incluso consysctl -w sys.net.ipv4.tcp_max_syn_backlog=2 ysysctl -w net.ipv4.tcp_syncookies=0, Sigo obteniendo los mismos resultados! Debo estar perdiendo algo o completamente mal entendidolisten()ropósito de la acumulación de @.

Respuestas a la pregunta(2)

Su respuesta a la pregunta