UNIX网络编程中的描述字就绪条件
来源:互联网 发布:应对高考阅读优化卷下 编辑:程序博客网 时间:2024/06/06 01:53
我们一直在讨论等待某个描述字准备好 I/O (读或写)或是其上发生一个待处理的异常条件(带外数据)。尽管可读性和可写性对于普通文件这样的描述字显而易见,然而对于引起 select 返回套接口就绪的条件要更为复杂一些。
1、下列四个条件中的任何一个满足时,一个套接口准备好读:
- 该套接口接收缓冲区中的数据字节数大于等于套接口接收缓冲区低潮标记的当前大小。对这样的套接口的读操作将不阻塞并返回一个大于0 的值(也就是返回准备好读入的数据字节数)。可以使用 SO_RCVLOWAT 套接口选项设置该套接口的低潮标记。对于 TCP 和 UDP 套接口而言,其缺省值为 1。
- 该连接的读这一半关闭(也就是接收了 FIN 的 TCP 连接)。对这样的套接口的读操作将不阻塞并返回 0(也就是返回 EOF )。
- 该套接口是一个监听套接口并且已完成的连接数不为 0。对这样的套接口的 accept 通常不会阻塞。
- 套接口上有一个套接口错误待处理。对这样的套接口的读操作将不阻塞并返回 -1 (也就是返回一个错误),同时把 errno 设置成确切的错误条件。这些待处理的错误( pending error)也可以通过指定 SO_ERROR 套接口选项调用 getsockopt 获取并清除。
2、下列四个条件中的任何一个满足时,一个套接口准备好写:
- 该套接口发送缓冲区中的可用空间字节数大于或等于套接口发送缓冲区低潮标记的当前大小,并且或者该套接口已连接,或者该套接口不需要连接(例如 UDP 套接口)。这意味着如果我们把这样的套接口设置成非阻塞,写操作将不阻塞并返回一个正值(例如由传输层接受的字节数)。我们可以使用 SO_SNDLOWAT 套接口选项来设置该套接口的低潮标记。对于 TCP 和 UDP 套接口而言,其缺省值通常为 2048。
- 该连接的写这一半关闭。对这样的套接口的写操作将产生 SIGPIPE 信号。
- 该套接口早先使用非阻塞模式 connect 以建立连接,并且连接已经异步建立,或者 connect 已经以失败告终。
- 套接口上有一个套接口错误待处理。对这样的套接口的写操作将不阻塞并返回 -1(也就是返回一个错误),同时把 errno 设置程确切的错误条件。这些待处理的错误也可以通过指定 SO_ERROR 套接口选项调用 getsockopt 获取并清除。
0 0
- UNIX网络编程中的描述字就绪条件
- select 描述符就绪条件
- 网络编程中的文件描述字
- 线程同步-条件变量-unix网络编程
- UNIX网络编程:互斥锁和条件变量
- select系统调用 -- 文件描述符就绪条件
- 【Unix网络编程】socket函数与描述符
- 《UNIX网络编程 卷1》 笔记: 描述符传递技术
- UNIX网络编程——通过UNIX域套接字传递描述符和 sendmsg/recvmsg 函数
- UNIX网络编程--套接字可读或可写的条件
- UNIX网络编程卷二 笔记 互斥锁和条件变量
- UNIX网络编程(七)互斥锁和条件变量
- 《UNIX网络编程 卷1》 笔记: 竞争条件!
- 《UNIX网络编程 卷1》 笔记: 互斥锁与条件变量
- 《UNIX网络编程 卷2》 笔记: 互斥锁与条件变量
- unix网络编程中的包裹函数
- UNIX网络编程中的一些参数-POSIX
- unix网络编程中的包裹函数
- javaweb学习总结(四十一)——Apache的DBUtils框架学习
- 多维随机变量及其概率分布
- 学习笔记-JS公开课三
- Using Spring 4 WebSocket, sockJS and Stomp support to implement two way server client communication
- RBF核矩阵的实现
- UNIX网络编程中的描述字就绪条件
- Kinect+OpenNI学习笔记之3(获取kinect的数据并在Qt中显示的类的设计)
- ZooKeeper web管理安装node-zk-browser
- Eclipse、MyEclipse、java web开发问题
- LwIP用TCP连接方式在数据量比较大协议栈卡死
- 最大公约数问题
- PHP system函数无法调用ncl命令解决方法
- 零基础学习Android开发
- Semaphore实现信号灯