I/O事件

下列情况socket可读:

  1. socket内核接收缓存区中的字节数大于或者等于其低水位标记SO_RCVLOWAT。此时我们可以无阻塞地读该socket,并且读操作将返回的字节数大于0。
  2. socket通信的对方关闭连接。此时对该socket的读操作将返回0。
  3. 监听socket上有新的连接请求。
  4. socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除错误

下列情况socket可写:

  1. socket内核发送缓冲区中的可用字节数大于或者等于其低水位标记SO_SNDLOWAT。
  2. socket的写操作被关闭。对写操作被关闭的socket执行写操作将处罚一个SIGPIPE信号。
  3. socket使用非阻塞connect连接成功或者失败(超时)之后。
  4. socket上有未处理的错误。此时我们可以使用getsockopt来读取和清除该错误。

你可能感兴趣的:(I/O事件)