Según tengo entendido, cartera de pedidos determina el tamaño de la cola de conexión . Cualquier solicitud adicional que tenga un tamaño mayor en ese momento se cancelará (es esta declaración ¿no?).escucha() ignorando el valor de retraso acumulado
Ahora me tienen muy simple programa server.c
socket()
bind()
listen(..., 5)
while(1)
{
accept()
read()
write()
sleep(3)
close()
}
Ahora, comienzo a 8 clientes a la vez para conectarse a este servidor. Sorprendentemente, el servidor sirve a todos los 8 clientes, pero en su lugar debe hacer cola solo a 5 clientes & restantes. Se deben rechazar 3 solicitudes de clientes. Otro punto interesante es que incluso si pongo este valor de acumulación como 0, el resultado sigue siendo el mismo. Luego intenté comentar la llamada a listen(), con esto se rechazaron las conexiones de los 8 clientes.
¿Alguien puede proporcionar alguna información sobre esto.
Usted debe poner 'read',' 'write' y close' en un entorno concurrente. En su código, cuando la siguiente conexión es 'accept'ed parece que la anterior ya ha sido cerrada.Coloque el código en un hilo y asegúrese de que cada conexión dure lo suficiente para garantizar que realmente ocurran los 8 clientes que solicitan su servidor simultáneamente. –
estaba probando ** backlog ** hace algún tiempo y no llegué a ninguna parte. espero ver respuestas ahora – tuxuday
OP, puede publicar su código de muestra. para que la gente pueda copiarlo y pegarlo y probarlo. – tuxuday