易截截图软件、单文件、免安装、纯绿色、仅160KB

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



相关问答:

java如何控制远程Linux重启

我目前在本地的linux上写了一个swing的界面,想通过这个界面来控制其它电脑的linux重启。
我知道用Runtime.getRuntime().exec("shutdown -r");可以控制本机Linux重启,但是怎么控制远程的linux重启呢? ......

关于Linux gcc编译器的问题

原先的GCC版本为4.1.2,我重新编译安装了GCC4.3.2,但是编译完程序运行程序时会出现version `GLIBCXX_3.4.9' not found 这个问题.在网上面查了一下是软连接的问题。但是本人对Linux不太熟悉,“应该制作RPM包然后 ......

北京急招linux、PHP网络应用开发

我们隶属中科院计算所网络重点实验室(http://www.ict.ac.cn/survey/channel/detail443.asp)基础设施课题组.
现因项目和业务拓展的需要,特需要招聘与项目相关的网络应用工程师1-2名。

具体要求如下。有意者 ......

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_RC ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号