日期:2014-05-16  浏览次数:20622 次

请教 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 ");
}