C#的一些情节!
来源:互联网 发布:python入门教程pdf 编辑:程序博客网 时间:2024/04/30 02:46
在Windows CE中,Select模型是唯一被支持的I/O模型。Select I/O模型就是利用select函数对I/O进行管理。
函数select的功能在于获取一个或多个套接字的状态,以及在必要的时候执行同步I/O操作进行等待。它的原型如下:
int select(
int nfds,
fd_set FAR* readfds,
fd_set FAR* writefds,
fd_set FAR* exceptfds,
const struct timeval FAR* timeout
);
参数nfds被忽略,只是为了保持与Berkeley的套接字规范相兼容。
参数readfds指向用于检查可读性的一系列套接字。
参数writefds指向用于检查可写性的一系列套接字。
参数exceptfds指向用于检查错误的一系列套接字。
参数timeout设置select函数能够最多等待的I/O操作时间。在阻塞操作时,该参数被设置为NULL,表示必须有操作发生才停止等待。
该函数返回结构体fd_set结构体中处于准备好状态的套接字句柄的数目。如果超时,函数select返回0;否则,在发生错误的时候返回SOCKET_ERROR。函数WSAGetLastError能返回的错误码以及相应的描述如下:如表11-14
错误码描述
WSANOTINITIALISED必须在成功调用WSAStartup函数之后,才能调用此函数
WSAENETDOWN网络子系统出错或者相关的服务提供者出现故障
WSAEINPROGRESS阻塞性的Winsock函数正在被调用,或是服务提供者正在处理回调函数
WSAENOTSOCK指定的套接字描述符不是合法的套接字
WSAEFAULT参数argp不是合法的用户地址空间的地址
WSAEINVAL参数不被支持或是不合法
WSAEINTR套接字被关闭
表11-14错误码以及对应描述
该函数用于获取一个或多个套接字的状态。对于每个套接字来说,函数能够分别获取读、写以及发生错误的状态。待查询状态的套接字用结构体fd_set来表示。统一个fd_set结构体中的所有套接字必须和同一个服务提供者相关联。函数返回的时候,结构体fd_set的值反映了满足指定条件的套接字。而函数返回值代表了满足指定条件的套接字的数目。
如果套接字处于监听的状态且有连接请求到达,那么fd_set中相应的位被设置为可读,而accept函数不被阻塞而直接完成。对于其他状态的套接字来说,可读性表示队列中存在数据,而接收函数,如recv和recvfrom不用被阻塞。
如果套接字在处理非阻塞的connect函数调用,套接字只有在创建连接成功完成的时候才被设置为可写。如果套接字不是处理connect函数调用,可写行表示发送函数,如send和sendto,能够保证成功执行。
在readfds、writefds和exceptfds这三个参数中,最多只能有两个参数被同时设置为空;而另外的非空参数中至少包含一个套接字的句柄。
readfds集合包括符合下述任一条件的套接字:
1) 如果listen函数已经被调用,而且一个连接正在被建立,那么accept函数将成功执行。
2) 有供读取的数据;如果SO_OOBINLINE属性被设置,这里的数据包括带外数据。
3) 连接被关闭、重置或是中断。
writefds集合包括符合下述任一条件的套接字:
1) 如果正在处理一个非阻塞的connect函数调用,那么连接会成功。
2) 数据能够被发送。
exceptfds集合包括符合下述任一条件的套接字:
1) 如果正在处理一个非阻塞的connect函数调用,连接尝试会失败。
2) 在SO_OOBINLINE属性被禁止的情形下,有带外数据可以被读取。
Winsock动态链接库还提供了相应的fd_set结构体的函数,便于程序对fd_set的控制。主要的fd_set结构体操作函数如下:
1) FD_CLR(s, *set):从集合set中删除套接字s。
2) FD_ISSET(s, *set):检查套接字s是否是集合set的一员。如果是,返回非零值;否则,返回0。
3) FD_SET(s, *set):往集合set中添加套接字s。
4) FD_ZERO(*set):初始化集合set为空集合。
- C#的一些情节!
- java的一些情节!
- ActiveX中的一些情节!
- 我的刘德华情节
- TOMCAT 的.16情节
- 我的文学情节
- 我的IT情节
- 我的羽毛球情节
- 电影里的情节
- 开始的情节
- 程序员的大侠情节
- 情节
- 今天学习的数据库中的分页(外加自己的一些伤感情节)
- 那些年的代码情节
- 我的动态库“情节”
- 和楠楠在一起难忘的情节
- Tony Qu的《WPF揭秘》情节
- 根据电影情节测试你的内心
- Leetcode: Max Points on a Line .
- 转载-Alpha通道实现
- poj3648,2-sat求解
- 网站网址链接
- VC工具:Depends
- C#的一些情节!
- 机器学习书单
- log4j深入研究(1)
- android屏幕分辨率适配及dip、sp、pt、px等区别
- Linux读取一行文本的方法
- 采用spring+structs+hibanate框架开发javaWeb项目
- Ext js 4 slider always show tip demo
- ActiveX中的一些情节!
- POJ3461 字符串哈希