Red de conocimientos turísticos - Información de alquiler - Modificar el tamaño del buffer del socket del sistema Linux

Modificar el tamaño del buffer del socket del sistema Linux

Al programar sockets, a veces puede ser necesario modificar el tamaño del búfer de recepción del socket. Puede usar la función setsockopt aquí, pero si el búfer que se va a modificar es grande (como 500 MB), debe modificar los parámetros TCP/IP del kernel del sistema. De lo contrario, el tamaño del búfer de recepción estará limitado por el. parámetros del kernel, por lo que es necesario realizar dos modificaciones. La modificación se explica a continuación modificando el búfer de recepción del socket a 500 MB. Así es como se debe aprender Linux.

Modificar los parámetros TCP/IP del kernel

Utilice el comando sysctl en la terminal para modificar el límite máximo de buffer del socket:

sudo sysctl-w net .core .rmem _ max = 5242880001

Utilice la función setsockopt para modificar la opción SO_RCVBUF en el código.

int recvbuff = 500 * 1024 * 1024

if(setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (const char *)& recvbuff, sizeof(int)) == - 1)

printf("setsocket error \ n ");

Otros

printf("setsocket exitoso\ n ");

Para los dos puntos anteriores, cambie solo 1 punto y un socket solo reservará 63 buffers de recepción de mensajes; cambie solo el punto 2, y el tamaño del buffer estará limitado por rmem_max. Si el buffer requerido es grande, estos dos Todo. debe cambiar.