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
}
工作正常,但是刺激性选择()行为
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
}
没有。它首次运行,但下一次运行while循环时,即使sd套接字接收到数据,它也会超时。在我看来,浪费资源必须每次都清空和填充设置。
任何人都有一个很好的解释,为什么这是,甚至更好,也许建议如何避免它?
我认为你理解的一些代码对于理解为什么表现得那么重要。 – SoapBox 2008-11-12 23:27:22