linux下怎么设置udp接收缓存最大值?
if(setsockopt(TUdpRec_sUDP,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int)) == 0)
printf( "set senbufsize = %d\n", nRecvBuf);
if(getsockopt(TUdpRec_sUDP, SOL_SOCKET, SO_RCVBUF, (char *)&nRecvBuf, &nBufSize) == 0)
printf( "get senbufsize = %d\n", nRecvBuf);
使用这样的方法设置udp缓冲,最大就只能到256K,能不能突破这个限制?
怎么设置??
为什么要设置那么大的缓冲区 ?
为什么不把包分成几个来发?
一次发太大的包很容易失败。
现在只是从网络收UDP数据(1024包大小),写到硬盘。
缓冲偶尔会溢出,
还有 用netsata命令看信息
其中:
udp包接收错误,还有最后的 接收缓冲错误
数都很大.
什么情况会造成这样的原因??
1、可以突破这个限制,但是首先要增大Linux操作系统的接受缓冲区限制。
2、UDP接收错误,原因:(1)网络条件较差,比如同时有大量的别的数据包。
(2)由于你写硬盘处理得比接收的慢,缓冲区满以后,有的数据包被抛弃了。
比如运行程序前,先执行如下命令:
sysctl -w net.core.rmem_max=13238272 net.core.rmem_default=13238272
相关问答:
使用Struts2上传文件,在linux下报错
2009-09-29 14:56:20,801 [org.apache.struts2.interceptor.FileUploadInterceptor]-[ERROR] Processing of multipart/form-data request failed. c:/temp/upload__1dcd07ee_12 ......
Linux新手,请大哥大姐不要见笑。
我用root用户登录到Linux系统。在根目录下面建了目录dir1,后用命令cd /dir1进入到dir1目录下,然后再用mkdir dir2建立了目录dir2 ,再后来用命令cd /dir2是,提示为:-bush ......
原先的GCC版本为4.1.2,我重新编译安装了GCC4.3.2,但是编译完程序运行程序时会出现version `GLIBCXX_3.4.9' not found 这个问题.在网上面查了一下是软连接的问题。但是本人对Linux不太熟悉,“应该制作RPM包然后 ......
请问谁有在linux下安装oracle的指导文档最好是11g的,安装了好几次都失败了,郁闷……
10g的文档,供参考.
linux平台下oracle数据库安装
http://blog.csdn.net/tianlesoftware/archive/2009/10/24/47 ......