linux查看系统发送接收缓存

查看接收缓冲区:sysctl -a | grep rmem

修改配置文件:vim /etc/sysctl.conf

添加:
net.core.rmem_max = 2097152
#net.core.wmem_max = 2097152

其中net.core.wmem_max是发送缓冲区上限

执行配置:sysctl -p


发布了12 篇原创文章 · 获赞 5 · 访问量 3万+
展开阅读全文

关于epoll的问题,发送缓冲区以及接受缓冲区?

03-23

本人刚学习epoll,向论坛大神问几个问题 本人理解,ET只有在文件描述符未就绪变为就绪时才会重新通过内核来告知,导致每一次的读取必须将缓冲区内数据读完,即处理完该事件 但是我们自己设定的用户空间缓冲区buf是有大小的,假如小于sockfd通告窗口大小,还是说我们会一般将用户空间的buf大小就写成和通告的窗口大小写成一致,则不存在,一次无法将缓冲区读完的情况发生 以下是tcp回射程序的部分 ``` else if(events[i].events&EPOLLIN) { if((sockfd=events[i].data.fd)<0) continue; while(rs) { if((n=read(sockfd,buf,MAXLINE))<0) { if(errno==ECONNRESET||errno=EAGAIN) { close(sockfd); events[i].data.fd=-1; } else if(n==0) { close(sockfd); events[i].data.fd=-1; } } if(n==sizeof(buf)) rs=1; else rs=0; } ev.data.fd=sockfd; ev.events=EPOLLOUT|EPOLLET; epoll_ctl(efd,EPOLL_CTL_MOD,sockfd,&ev); } ``` 如何一直读sockfd,这是本人自己理解的 epoll但由于一直没有用epoll将该sockfd改成写,无法将buf内的数据写到sockfd,如何改正,或者如何正确的写出epoll函数, 我在网上找了很多种实现epoll的都并没有持续读直到无法读取那一部分的代码。一直不理解epoll如何实现这一过程,同理write过程也有这样一个问题,(若没写完buf内的内容必须持续写),但后面写的部分由于无法读取会覆盖前面写的部分,可能问题有些混乱,谢谢各位大神 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览