linux 套接字函数send和recv函数(阻塞模式)
来源:互联网 发布:mac用迅雷下载速度慢 编辑:程序博客网 时间:2024/05/21 19:22
send函数的流程:
buffer的内容 —->linuxTCP协议栈发送缓存区—->内核发送
什么情况下,buffer内容才会先写入协议缓存区呢 ,协议缓存区有一个SO_SNDLOWAT最低位标志,表示缓存区有空间了, 一般是2048字节。就是说缓存区至少2048字节剩余空间,你才能继续向缓存区写。selcet /epoll等监视内核,就是依据这个,判断socket是否可以向缓存区写数据,就是产生可写事件。
recv函数的流程:
内核接受远端数据—–>存到linux TCP协议接收缓存区—–>copy到buffer里面(同时要清除协议缓存区)
什么情况下可以读取数据呢, 协议缓存区有一个SO_RCVLOWAT 最低水位标志,表示缓存区有数据了,你可以读取了,这个值是1字节。如果你给的buffer一次性读取不完,就要循环读取,直到读取返回EAGAIN,就表示读完了,返回0表示socket已关闭。所以读取一般是while循环。select/epoll 等就是靠内核监视,这个协议缓冲区有没有数据,产生是否有了可读事件。
0 0
- linux 套接字函数send和recv函数(阻塞模式)
- 套接字API(十一)recv和send函数
- 套接字中send和recv函数详解
- 套接字的阻塞和非阻塞send/recv
- Linux中send()函数和recv()函数
- send和recv函数
- Send和Recv函数
- send和recv函数
- send和recv函数
- recv()和send()函数
- linux send和recv函数详解
- socket中send和recv函数的阻塞理解
- socket中send和recv函数的阻塞理解
- recv函数和send函数
- recv函数和send函数
- linux send recv函数详解
- linux send recv函数详解
- linux send recv函数详解
- C++/C++11中std::transform的使用
- STL--Lesson001-01-STL概述
- CCF2014-09-2画图
- 对于配置了Spring编码过滤器之后,仍出现中文乱码的处理
- css用一张大图片来设置背景优缺点 实现方法
- linux 套接字函数send和recv函数(阻塞模式)
- 字段赋值映射,NGUI、UGUI事件管理
- android下拉刷新scrollview的用法pullToRefreshScrollview
- MQTT 移植STM32+GPRS(串口透传)(三)
- css 兼容ie浏览器的方法
- vue自定义指令拖拽事件
- Android点赞动画
- 三月十八小结
- 恩,今天把git和sublime结合了一下。。然后看了下《西部世界》