
进行socket编程有时候可能需要修改下socket的接收缓冲区大小,这里可以使用 setsockopt 函数,但是如果需要修改的缓冲区很大(比如500MB),则还需要修改系统内核的TCP/IP参数,不然接收缓冲区大小会收到内核参数的限制,所以需要改两个地方。下面以把socket接收缓冲区修改为500MB说明一下要作的修改。《Linux就该这么学》
修改内核TCP/IP参数
在终端用sysctl命令修改socket最大缓冲区限制:
sudo sysctl -w net.core.rmem_max=5242880001
在代码中用setsockopt函数修改SO_RCVBUF选项
int recvbuff = 500*1024*1024
if(setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (const char*)&recvbuff, sizeof(int)) == -1)
printf("setsocket error\n")
else
printf("setsocket success\n")12345
以上两点,只改第1点,一个socket只会预留63个报文的接收缓冲;只改第2点,缓冲区大小会受到rmem_max的限制,如果需要的缓冲区很大的话,必须两点都改。
在Linux终端翻页后消失可能是由于您的终端没有被正确配置所导致的。如果您想要解决这个问题,您需要确保您的终端的环境变量正确配置,并且您的终端的缓冲区大小足够大,以便您可以在终端中查看更多的内容。此外,您还可以尝试使用一些特定的命令来改变您的终端的缓冲区大小,比如stty -a,stty -F,stty -icanon等等。最后,您还可以尝试使用一些特定的工具来改变您的终端的缓冲区大小,比如more,less,tail等等。希望以上的信息能够帮助您解决您的问题。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)