小编dea*_*clo的帖子

c中有刺激性的select()行为

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套接字接收数据,它也会超时.在我看来,每次都必须清空和填充设置是浪费资源.

任何人都有一个很好的解释为什么这是,甚至更好,也许是一个如何避免它的建议?

c sockets select timeout

5
推荐指数
2
解决办法
3765
查看次数

标签 统计

c ×1

select ×1

sockets ×1

timeout ×1