关于socket可读可写的条件

本文详细阐述了套接字在select调用中返回就绪状态的条件,包括可读、可写及异常条件。对于可读,涵盖了接收缓冲区满、连接关闭、监听套接字有已完成连接及套接字错误等情况。对于可写,则讨论了发送缓冲区空间、连接状态及错误处理等。同时提到了带外数据作为异常条件的一个标志。
摘要由CSDN通过智能技术生成

引起select返回套接字就绪的条件

可读的四个条件(满足其中之一即可):

  • 套接字接收缓冲区的数据字节数大于等于接收缓冲区低水位标记的当前大小。
  • 该连接的读半关闭(接收到FIN的TCP连接)。读操作不阻塞并返回0(EOF).
  • 该套接字是监听套接字且已完成的连接数不为0.
  • 其上有一个套接字错误待处理。读操作返回-1,并设置errno。

可写的四个条件(满足其中之一即可):

  • 发送缓冲区的可用空间字节数大于等于套接字发送缓冲区低水位标记的当前大小,并且该套接字已连接,或者该套接字不需要连接(UDP socket)。
  • 该连接的写半关闭。写操作产生SIGPIPE信号
  • 使用非阻塞式connect的套接字已建立连接,或者connect已经以失败告终。
  • 其上有一个套接字错误待处理。

异常的条件:

  • 如果一个套接字存在带外数据或者仍处于带外标记,那么它有异常条件待处理。

注:套接字上发生错误时,将由select标记为既可读又可写。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值