-----------------------------------------------------------
timeout -- это верхняя граница времени, которое пройдет перед возвратом из select. Можно использовать ноль, при этом select
завершится немедленно. (Это полезно для периодического опроса.) Если timeout равен NULL (нет тайм-аута), то select будет
ожидать изменений неопределенное время.
-----------------------------------------------------------
#include
#include
#include
#include int
main(void)
{
fd_set rfds;
struct timeval tv;
int retval;
/* Ждем, пока на стандартном вводе (fd 0) что-нибудь
появится. */
FD_ZERO(&rfds);
FD_SET(0, &rfds);
/* Ждем не больше пяти секунд. */
tv.tv_sec = 5;
tv.tv_usec = 0;
retval = select(1, &rfds, NULL, NULL, &tv);
/* Не полагаемся на значение tv! */
if (retval)
printf("Данные доступны.\n");
/* Теперь FD_ISSET(0, &rfds) вернет истинное значение. */
else
printf("Данные не появились в течение пяти секунд.\n");
exit(0);
}
Такое выдало?
Вам нужно сделать тоже самое, но для фалового дескриптора, соответствующего вашему сокету.