Как принять сокет с тайм-аутом
Существует ли тайм-аут кроссплатформенного решения для приема клиента с помощьюaccept
функция без установки сокета на неблокирующую?
Я знаю, что я должен использоватьselect
функция к нему, но что яя делаю неправильно?
SOCKET NativesAcceptClient(SOCKET s, int timeout)
{
int iResult;
struct timeval tv;
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(s, &rfds);
tv.tv_sec = (long)timeout;
tv.tv_usec = 0;
iResult = select(s, &rfds, (fd_set *) 0, (fd_set *) 0, &tv);
if(iResult > 0)
{
return accept(s, NULL, NULL);
}
else
{
//always here, even if i connect from another application
}
return 0;
}
Как это исправить? Спасибо!