select 与 fd_set
来源:互联网 发布:物流数据分析 编辑:程序博客网 时间:2024/04/29 13:24
select(),确定一个或多个套接口的状态,本函数用于确定一个或多个套接口的状态,对每一个套接口,调用者可查询它的可读性、可写性及错误状态信息,用fd_set结构来表示一组等待检查的套接口,在调用返回时,这个结构存有满足一定条件的套接口组的子集,并且select()返回满足条件的套接口的数目。
用途:
确定一个或多个套接口的状态,如需要则等待。
nfds:是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。
readfds:(可选)指针,指向一组等待可读性检查的套接口。
writefds:(可选)指针,指向一组等待可写性检查的套接口。
exceptfds:(可选)指针,指向一组等待错误检查的套接口。
timeout:select()最多等待时间,对阻塞操作则为NULL。
返回值:
select()调用返回处于就绪状态并且已经包含在fd_set结构中的描述字总数;如果超时则返回0;否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError获取相应错误代码。
当返回为-1时,所有描述符集清0。
当返回为0时,超时不修改任何描述符集。
当返回为非0时,在3个描述符集里,依旧是1的位就是准备好的描述符。这也就是为什么,每次用select后都要用FD_ISSET的原因。
fd_set:
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fd_set的内容,由此来通知执行了select()的进程哪一socket或文件发生了可读或可写事件。
常见用法:
以上式子中的fd为socket句柄。
网址:http://blog.csdn.net/equoid/article/details/45042561
0 0
- fd_set与select
- fd_set与select(转)
- select 与 fd_set
- select 与 fd_set
- select 与 fd_set
- fd_set与select
- fd_set select
- select系统调用与FD_SET,FD_ISSET,FD_ZERO
- select系统调用与FD_SET,FD_ISSET,FD_ZERO
- select 和 struct fd_set
- Linux: fd_set和select()
- FD_SET,FD_ISSET,FD_ZERO,select
- select()和fd_set
- FD_SET,FD_ISSET,FD_ZERO,select
- linux select和fd_set
- select机制中FD_SET
- fd_set & select函数学习
- select函数及fd_set
- 正则表达式匹配规则
- easyui 之datagrid 的数据加载
- OOP面向对象三大特点
- # 欢迎使用Markdown编辑器写博客
- 使用Coap实现android 局域网通信
- select 与 fd_set
- 如何将某个exe注册为windows服务,直接从后台运行
- 简单的python http 接口自动化测试框架脚本
- bzoj2555
- js的BOM对象完全解析
- FreeMarker如何得到List的size?
- 每天一个linux命令(1):ls命令-----学习笔记
- 百度神卡套餐资费
- caffe中创建lmdb格式时遇到Shuffling data Segmentation fault (core dumped)