我只能在 select () API 中将超时参数设置为最多 20 秒。无论我给出的值高于 20,select() 都会在 20 秒后返回...
所以我试图写一个超时 1 分钟的循环,如下所示
int timeoutcount = 0;
do
{
FD_ZERO(&fd);
FD_SET(sock,&fd);
timeout.tv_sec = 20;
timeout.tv_usec = 0;
rc = select (sock+1,&fd,null,null,&timeout);
if(rc ==0)
timeoutcount += 20;
}
while(rc ==0 && timeoutcount <60)
请帮助我......我走的路正确吗?
如果是这样,select 在第一次超时后返回 1..也帮我解决这个问题
注意:我在 Objective C 中使用它
select 的超时时间没有最长 20 秒的限制——一定是其他原因(很可能是套接字上的数据已准备好读取)导致 select() 提前返回。如果你真的只想使用 select() 作为一种睡眠方式,请尝试这样调用它:
struct timeval tv = {600, 0}; // sleep for ten minutes!
if (select(0, NULL, NULL, NULL, &tv) < 0) perror("select");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)