Linux 시스템 소켓 버퍼 크기 수정
소켓 프로그래밍을 수행할 때 소켓의 수신 버퍼 크기를 수정해야 하는 경우가 있습니다. 여기서는 setockopt 함수를 사용할 수 있지만 수정해야 하는 버퍼가 큰 경우(예: 500MB) 또한 시스템 커널 매개변수를 수정해야 합니다. 그렇지 않으면 수신 버퍼 크기가 커널 매개변수에 의해 제한되므로 두 곳을 변경해야 합니다. 다음은 소켓 수신 버퍼를 500MB로 변경하여 수정해야 할 사항을 설명합니다. "이것이 Linux를 배우는 방법입니다." 커널 TCP/IP 매개변수 수정
소켓 최대 버퍼 제한을 수정하려면 터미널에서 sysctl 명령을 사용하세요:
sudo sysctl -w net .core.rmem_max=5242880001 코드에서 SO_RCVBUF 옵션을 수정하려면 setockopt 함수를 사용하세요.
int recvbuff = 500*1024*1024;
if(setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF , (const char*)amp; recvbuff , sizeof(int)) == -1)
printf("setsocket error\n");
else
printf("setsocket 성공\n "); 12345
위의 첫 번째 지점만 변경하면 소켓은 두 번째 지점만 변경하면 63개 메시지에 대한 수신 버퍼만 예약합니다. 버퍼 크기는 rmem_max에 의해 제한됩니다. 필요한 버퍼가 크면 두 지점을 모두 변경해야 합니다.