当前位置: 技术问答>linux和unix
请教 select 问题?
来源: 互联网 发布时间:2016-01-09
本文导语: 服务器端的流程 socket->bind->listen->accept, 现在想实现,当listen后在规定的时间内,如果没有客户端连接,accept没有返回,就关闭该socket,请问是不是利用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 : %sn",strerror(errno));
}
else if(nRet)
{
accept(...);
}
else if(0 == nselect)
{
printf("tTime out!n");
}
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 : %sn",strerror(errno));
}
else if(nRet)
{
accept(...);
}
else if(0 == nselect)
{
printf("tTime out!n");
}