Unix网络编程学习笔记——Select函数的返回条件

本文详细介绍了Unix系统中select函数在进行网络编程时,判断套接字可读、可写及异常条件的具体情况,包括读准备的4个条件、写准备的3个条件和异常条件的处理,对理解和使用select函数进行网络通信具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout); 

在select函数的定义中,中间三个参数用于指定我们需要内核帮助测试是否可读、可写和异常条件的描述字。

那么描述字在哪些情况下才会被认为准备好呢?


下面四个条件任何一个满足的时候套件字准备好读:

1. 套接口接受缓冲区的数据字节数大于等于套接口接受缓冲区的低潮限度当前值。对这样的套接口读操作将不阻塞并返回一个大于0的值(既准备好读入的数据量)。我们可以用套接口选项SO_RCVLOWAT来设置此低潮限度,对于TCP和UDP套接口,其缺省值为1。

2. 连接的读这一半关闭(也就是接收了FIN的TCP连接)。对这样的套接口读操作将不阻塞并返回0(记文件结束符)。

3. 套接口是一个监听的套接口且已完成的连接数为非0。正常情况下这样的套接口上的accpet不会被阻塞。

4. 有一个套接口错误待处理。对这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值