TCP选项之SO_RCVLOWAT和SO_SNDLOWAT
来源:互联网 发布:mac桌面的图标如何清除 编辑:程序博客网 时间:2024/05/08 11:41
每个套接口都有一个接收低潮限度和一个发送低潮限度。
接收低潮限度:对于TCP套接口而言,接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比如触发select或者epoll,返回“套接口可读”。
发送低潮限度:对于TCP套接口而言,和接收低潮限度一个道理。
理解接收低潮限度:如果应用程序没有调用recv()去读取socket的接受缓冲区的数据,则接受缓冲区数据将注一直保存在接受缓冲区中,所以随着接受缓冲区接受到更多发送端发送缓冲区中的数据,则肯定会导致接受缓冲区溢出,所以设置一个接受低潮限度,当epoll监听到某一个socket的接受缓冲区的数据超过了接受低潮限度,则触发读就绪,使得epoll循环返回,开始处理读I/O事件。
接收低潮限度:默认为1字节
理解发送低潮限度:如果应用程序没有调用send()来copy应用程序buff中的数据到socket发送缓冲区中,则随着发送缓冲区的数据被内核通过tcp协议发送出去,最后socket发送缓冲区的数据越来越少,可用的剩余空间越来越多,最后超过发送缓冲区的发送低潮限度,则epoll监听到这个socket可写,使得epoll循环返回,开始处理写I/O事件。
接收低潮限度:对于TCP套接口而言,接收缓冲区中的数据必须达到规定数量,内核才通知进程“可读”。比如触发select或者epoll,返回“套接口可读”。
发送低潮限度:对于TCP套接口而言,和接收低潮限度一个道理。
理解接收低潮限度:如果应用程序没有调用recv()去读取socket的接受缓冲区的数据,则接受缓冲区数据将注一直保存在接受缓冲区中,所以随着接受缓冲区接受到更多发送端发送缓冲区中的数据,则肯定会导致接受缓冲区溢出,所以设置一个接受低潮限度,当epoll监听到某一个socket的接受缓冲区的数据超过了接受低潮限度,则触发读就绪,使得epoll循环返回,开始处理读I/O事件。
接收低潮限度:默认为1字节
理解发送低潮限度:如果应用程序没有调用send()来copy应用程序buff中的数据到socket发送缓冲区中,则随着发送缓冲区的数据被内核通过tcp协议发送出去,最后socket发送缓冲区的数据越来越少,可用的剩余空间越来越多,最后超过发送缓冲区的发送低潮限度,则epoll监听到这个socket可写,使得epoll循环返回,开始处理写I/O事件。
发送低潮限度:默认为2048字节
原文链接:http://my.oschina.net/yangan/blog/185262
0 0
- TCP选项之SO_RCVLOWAT和SO_SNDLOWAT
- TCP选项之SO_RCVLOWAT和SO_SNDLOWAT
- SO_RCVLOWAT和SO_SNDLOWAT选项
- GNU Linux中的SO_RCVLOWAT和SO_SNDLOWAT说明
- Socket选项SO_RCVLOWAT
- TCP选项之SO_RCVBUF和SO_SNDBUF
- TCP选项之TCP_CORK和TCP_NODELAY
- TCP选项之SO_RCVBUF和SO_SNDBUF
- TCP选项之SO_LINGER
- TCP选项之SO_LINGER
- TCP之选项TCP_KETEPALIVE
- TCP选项之SO_LINGER
- TCP选项之SO_LINGER
- TCP选项之SO_REUSEADDR
- TCP选项之TCP_KEEPALIVE
- TCP选项之SO_LINGER
- TCP选项之TCP_CORK和TCP_NODELAY的作用和意义
- TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项
- java 通过反射获取泛型的类型
- iOS 8无法定位的解决方案
- 第三周项目5.1数组做数据成员
- 【BZOJ2005】【Noi2010】能量采集 gcd
- 百度地图打包签名后,地图key验证失败问题解决.
- TCP选项之SO_RCVLOWAT和SO_SNDLOWAT
- IOS开发网络篇之──ASIHTTPRequest详解
- 在MFC的图片控件上用OpenGL的glDrawPixels函数画图时指定起点坐标
- vim的几个常用命令
- 第三周 项目四 考了语文数学的学生(多文件组织)
- jpush推送
- 多态,重载与重写
- Howt to delay code execute when using dwr ajx in javascript
- opensips安装步骤 for CentOS