请教 select 问题?
服务器端的流程 socket-> bind-> listen-> accept, 现在想实现,当listen后在规定的时间内,如果没有客户端连接,accept没有返回,就关闭该socket,请问是不是利用select 可以实现?或有别的实现方式?
------解决方案--------------------//after listen
fd_set skt_read;
struct timeval tmout;
int nRet = -1;
FD_ZERO(&skt_read);
FD_SET(s,&skt_read);
tmout.tv_sec = 90;
tmout.tv_usec = 0;
nRet = select(s+1,&skt_read,NULL,NULL,&tmout);
if(-1 == nRet)
{
printf( "\terror : %s\n ",strerror(errno));
}
else if(nRet)
{
accept(...);
}
else if(0 == nselect)
{
printf( "\tTime out!\n ");
}