socket可读
- socket内核接受缓冲区的字节数大于或者等于其最低水位标记SO_RCVLOWAT。此时我们可以无阻塞的读该socket,并且读操作返回的字节数大于0。
- socket通信对方关闭连接,此时对socket的读操作将返回0 。
- 监听socket上有新的连接请求。
- socket上有为处理的错误时可读。此时我们可以使用getsockopt来读取和清除该错误。
socket可写
- socket内核发送缓冲区中的可用字节数大于或等于其最低水位标记SO_SNDLOWAT。此时我们可以无阻塞的写该socket,并且写操作返回的字节数大于0 。
- socket的写操作关闭时,我们对写操作关闭的socket执行写的时候会触发一个SIGPIPE信号。
- socket使用非阻塞connect连接成功或者失败(超时)之后。
- socket上有未处理的错误。此时我们可以使用getsockopt来读取清除错误。
socket异常
select能处理异常情况就只有一种,当socket收到外带数据的时候