下列情况socket可读:
- socket内核接收缓存区中的字节数大于或者等于其低水位标记SO_RCVLOWAT。此时我们可以无阻塞地读该socket,并且读操作将返回的字节数大于0。
- socket通信的对方关闭连接。此时对该socket的读操作将返回0。
- 监听socket上有新的连接请求。
- socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除错误
下列情况socket可写:
- socket内核发送缓冲区中的可用字节数大于或者等于其低水位标记SO_SNDLOWAT。
- socket的写操作被关闭。对写操作被关闭的socket执行写操作将处罚一个SIGPIPE信号。
- socket使用非阻塞connect连接成功或者失败(超时)之后。
- socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误。
网友评论