• 《UNIX网络编程》之select IO


    select 函数的原理

    select 管理者

    用select来管理多个IO

    一旦其中的一个或者多个IO检测到我们所感兴趣的事件,

    select 函数返回,返回值为检测到的事件个数

    然后,遍历事件,进而去处理这些事件。

    select 原型:

    /* According to POSIX.1-2001 */
           #include <sys/select.h>
    
           /* According to earlier standards */
           #include <sys/time.h>
           #include <sys/types.h>
           #include <unistd.h>
    
           int select(int nfds, fd_set *readfds, fd_set *writefds,
                      fd_set *exceptfds, struct timeval *timeout);
    
           void FD_CLR(int fd, fd_set *set);//移除
           int  FD_ISSET(int fd, fd_set *set);//是否存在
           void FD_SET(int fd, fd_set *set);//
           void FD_ZERO(fd_set *set);//清空集合

    参数:

    1. 读、写、异常集合中的文件描述符的最大值加1

    2. 读集合 输入输出参数

    3. 写集合 输入输出参数

    4. 异常集合 输入输出参数

    5. 超时时间 输入输出参数

    读、写、异常事件发生条件

    1. 可读1.1 套接口缓存区有数据可读;

    1.2 连接的读一半关闭,即接收到FIN段,读操作将返回0;对方close。

    1.3 如果是监听套接口,已完成连接队列不为空时;connect连接成功。

    1.4 套接口上发生了一个错误待处理,错误可以通过getsockopt指定SO_ERROR选项来获取。

    2. 可写2.1 套接口发送缓冲区有控件容纳数据;

    2.2 连接的写一半关闭。即收到RST段之后,再次调用write操作;

    2.3 套接口上发生了一个错误待处理,错误可以通过getsockopt制定SO_ERROR选项来获取。

    3. 异常3.1 套接口存在带外数据。

  • 相关阅读:
    Windows Azure Cloud Service (6) Reboot and Reimage
    Windows Azure Platform Introduction (7) Windows Azure Host OS 和 Guest OS
    Nod32的内网升级方案
    32位色
    ASP.NET 2.0 的内部变化
    关于Nod的离线升级方案
    光、色、补色
    解决迅雷的“重复任务提示”
    Nod32Viewer不能取得最新的镜像包的问题
    火车头实在是太好玩了
  • 原文地址:https://www.cnblogs.com/wiessharling/p/4029275.html
Copyright © 2020-2023  润新知