1.select的参数说明
#include <sys/select.h>
int select( int nfds, fd_set FAR* readfds, fd_set * writefds, fd_set * exceptfds, const struct timeval * timeout);
nfds:是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。
readfds:(可选)指针,指向一组等待可读性检查的套接口。
writefds:(可选)指针,指向一组等待可写性检查的套接口。
exceptfds:(可选)指针,指向一组等待错误检查的套接口。
timeout:select()最多等待时间,对阻塞操作则为NULL,超时后会执行select后面的代码
2.使用方法
//设置超时的时间
struct timeval timeout;
timeout.tv_sec = 0;
timeout.tv_usec = 1000*100;
fd_set readfds;
int max_fd=0;
//判断使用哪一个socket的变量
bool m_Use1;
bool m_Use2;
//socket线程一直开启,监控sockfd1,sockfd2,当有数据过来时会执行select下面代码(或者没数据,但等待timeout超时也会执行下面代码)
while(1)
{