select
先指出一点,select的设计存在很多问题和缺陷select的几个参数都很诡异。许多人经常遇到的问题是每次调用过后没有重新FD_SET一下文件描述符列表,我刚接触这个函数的时候就被这个问题困扰过。今天又遇到了个问题。下面这段代码在我上大学的时候就写下了,一直工作的很好[code]int status(){ FD_SET(fd,&fset); return ::select(1,&fset,NULL,NULL,&s_timeout);}bool avail(){ int x= status(); if (x==-1){ perror("select()"); } // char buf[4]; // int err = recv(fd, buf, sizeof(buf), MSG_PEEK); // if(err == 0 || (err < 0 && errno != EAGAIN)) // throw 1; return x>0; }[/code]直到今天我把它移植到mac系统上程序可以正常的发数据包,但一直没有收到任何数据,花了一段时间折腾才定位到select一直返回为0但是这段代码在windows下工作的很好,为什么到了OS X上就失败呢?仔细的看了看文档intselect(int nfds, f...