网络编程中select()函数的功能

在网咯编中,select()函数主要应用方式如下

FD_ZERO(&wfds);
FD_SET(sockfd_camera,&wfds);
ret = select(1+sockfd_camera,NULL,&wfds,NULL,&tm);
这个是先建立socket套接字,注册一个套接字sockfd_camera,

然后使用select选定这个sockfd_camera。之后在阻塞在接受。


select()函数除了这种用法之外还可以用做定时器

比如

tv.tv_sec =0;
tv.tv_usec = 10000;
select (0, NULL, NULL, NULL, &tv);

这就是定义一个10ms的定时器。可以用作延时

void microseconds_sleep(unsigned long uSec){
    struct timeval tv;
    tv.tv_sec=uSec/1000000;
    tv.tv_usec=uSec%1000000;
    int err;
    do{
        err=select(0,NULL,NULL,NULL,&tv);
    }while(err<0 && errno==EINTR);
}

#include <stdio.h>
#include <sys/time.h>
#include <errno.h>
int main()
{
    int i;
    for(i=0;i<5;++i){
    printf("%d\n",i);
    //seconds_sleep(1);
    //milliseconds_sleep(1500);
    microseconds_sleep(1900000);
    }
}

sitemap