关于socket可读可写的条件
作者:互联网
引起select返回套接字就绪的条件
可读的四个条件(满足其中之一即可):
- 套接字接收缓冲区的数据字节数大于等于接收缓冲区低水位标记的当前大小。
- 该连接的读半关闭(接收到FIN的TCP连接)。读操作不阻塞并返回0(EOF).
- 该套接字是监听套接字且已完成的连接数不为0.
- 其上有一个套接字错误待处理。读操作返回-1,并设置errno。
可写的四个条件(满足其中之一即可):
- 发送缓冲区的可用空间字节数大于等于套接字发送缓冲区低水位标记的当前大小,并且该套接字已连接,或者该套接字不需要连接(UDP socket)。
- 该连接的写半关闭。写操作产生SIGPIPE信号
- 使用非阻塞式connect的套接字已建立连接,或者connect已经以失败告终。
- 其上有一个套接字错误待处理。
异常的条件:
- 如果一个套接字存在带外数据或者仍处于带外标记,那么它有异常条件待处理。
注:套接字上发生错误时,将由select标记为既可读又可写。
标签:待处理,socket,标记,一个套,可读,关于,接字,该套,连接 来源: https://blog.csdn.net/tianwange/article/details/120762306