Select模型

本文详细介绍了select函数的使用方法,包括其原型、相关宏操作及如何通过该函数进行I/O管理。此外,还提供了具体的代码示例,展示了如何利用select函数进行套接字的读操作。

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

1.select 函数原形

 

    int select (int nfds,

                    fd_set FAR * readfds,

                    fd_set FAR * writefds,

                    fd_set FAR * exceptfds,

                    const struct timeval FAR * timeout

);

 

说明:  最后1个参数timeout用于决定select最多等待I/O操作完成多久的时间。如果timeout为NULL,那么select调用会无限制的锁定或停顿下去,直到至少有1个描述符符合指定的条件后结束。timeval 结构定义如下:

     struct timeval

    {

         long tv_sec;

         long tv_usec;

     }

2.相关宏操作

 

  FD_CLR(s,*set) : 从set中删除套接子s.

  FD_ISSET(s,*set):  检查s是否set集合中的一元,是->返回TRUE

  FD_SET(s,*set):     s加入到set

  FD_ZERO(*set):     清空

 

3.使用方法

SOCKET s;

fd_set   fdread;

int         ret;

 

//Create a socket ,and accept a connection

//...............

 

//Manage I/O

while(TRUE)

{

    //clear set before calling select

    FD_ZERO(&fdread);

 

    FD_SET(s,&fdread);

   

    if((ret = select(0,&fdread,NULL,NULL,NULL) == SOCKET_ERROR)

   {

       //ERROR;

   }

 

 

    if(FD_ISSET(s,&fdread))

   {

       //read  s

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值