while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
FD_ZERO(&set);
FD_SET(sd,&set);
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
Run Code Online (Sandbox Code Playgroud)
然而,工作正常
FD_ZERO(&set);
FD_SET(sd,&set);
while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
Run Code Online (Sandbox Code Playgroud)
没有.它第一次工作,但下次它运行while循环时,即使sd套接字接收数据,它也会超时.在我看来,每次都必须清空和填充设置是浪费资源.
任何人都有一个很好的解释为什么这是,甚至更好,也许是一个如何避免它的建议?