文件描述符就绪的条件(可读可写)

下列情况下,socket可读:

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

下列情况下,socket可写:

1.socket内核发送缓冲区中的可用字节数大于或者等于其低水位标记SO_SNDLOWAT,此时我们可以无阻塞的读该socket,并且返回值大于0;
2.socket的写操作被关闭,对写操作被关闭的socket执行写操作会触发SIGPIPE的信号;
3.socket使用非阻塞connect连接成功或者失败之后;
4.socket上有未处理的错误,此时我们可以通过getsockopt来读取和清除该错误。

网络程序中,select能处理的异常情况只有一种:socket上接受到带外数据

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值