根据fd_set的位矢量实现,我们可以重新理解操作fd_set的四个宏: fd_set set; FD_ZERO(&set); /*将set的所有位置0,如set在内存中占8位则将set置为00000000*/ FD_SET(0, &set); /*将set的第0位置1,如set原来是00000000,则现在变为100000000,这样fd==1的文件描述字就被加进set中了*/ FD_CLR(4, &...
过去,一个fd_set通常只能包含<32的fd(文件描述字),因为fd_set其实只用了一个32位矢量来表示fd;现在,UNIX系统通常会在头文件<sys/select.h>中定义常量FD_SETSIZE,它是数据类型fd_set的描述字数量,其值通常是1024,这样就能表示<1024的fd。根据fd_set的位矢量实现,我们可以重新理解操作fd_set的四个宏: fd_se...
FD_ZERO(&set); /*将set的所有位置0,如set在内存中占8位则将set置为 00000000*/ FD_SET(0, &set); /* 将set的第0位置1,如set原来是00000000,则现在变为10000000,这样fd==1的文件描述字就被加进set中了 */ FD_CLR(4, &set); /*将set的第4位置0,如set原来是10001000,则现在变为10000000,这样f...
FD_ZERO(&set);//将你的套节字集合清空FD_SET(s,&set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字sselect(0,&set,NULL,NULL,NULL);//检查套节字是否可读,//很多情况下就是是否有数据(注意,只是说很多情况)//这里select是否出错没有写if(FD_ISSET(s, &set)//检查s是否在这个集合里...
int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout); 参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。struct timeval结构用于描述一段时间长度,如果在这个...
#include <stdio.h> #include <stdlib.h> #include <sys/select.h> int main(void) { fd_set rfds; struct timeval tv; int retval; /* Surveiller stdin (fd 0) en attente d'entrées */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Attendre jusqu'à 5 secondes. */ tv.tv_sec = 5; tv...
int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout); 参数maxfd是需要监视的最大的文件描述符值+1;rdset,wrset,exset分别对应于需要检测的可读文件描述符的集合,可写文件描述符的集 合及异常文件描述符的集合。struct timeval结构用于描述一段时间长度,如果在这个...
void FD_SET(int fd, fd_set *set);将标准输入(fd=0)加到文件表述符集合rfds中。
#include <stdio.h> #include <stdlib.h> #include <sys/select.h> int main(void) { int retval; fd_set rfds; struct timeval tv; /* Beobachte stdin (fd 0), um zu sehen, wenn es Eingaben gibt. */ FD_ZERO(&rfds); FD_SET(0, &rfds); /* Warte bis zu fünf Sekunden. */ tv....
fd_set rfds, wfds; #ifdef _WIN32 TIMEVAL tv; #else struct timeval tv; #endif /*_WIN32*/ FD_ZERO(&rfds); FD_ZERO(&wfds); if(rd) //TRUE FD_SET(*s, &rfds); //添加要测试的描述字 if(wr) FD_SET(*s, &wfds); tv.tv_sec = timems/1000; //seconds ...