Разница в этой функциональности связана с первым аргументом выбора — int nfds
Вот мой код:
Код: Выделить всё
int TIMEOUT = 5;
for (;;) {
FD_ZERO(&read_handles);
FD_SET(udpFD, &read_handles);
timeout.tv_sec = TIMEOUT;
timeout.tv_usec = 0;
if (select(udpFD+1, &read_handles, NULL, NULL, &timeout) == 0) {
printf("Select has timed out...\n");
return 1;
} else {
int length = 1;
if (FD_ISSET(udpFD, &read_handles)) {
//process read.
}
}
}
Код: Выделить всё
if(select(udpFD, &read_handles, NULL, NULL, &timeout) == 0)
udpFD — единственный дескриптор, на который я смотрю, но он имеет значение 4, потому что это не первый дескриптор, который я создал. Я не знаю, имеет ли это значение, поскольку это максимальное значение.
Как я могу одновременно истечь тайм-аутом и получить данные от обоих моих клиентов?
Подробнее здесь: https://stackoverflow.com/questions/227 ... ll-clients