Гость Опубликовано 24 февраля, 2002 Жалоба Поделиться Опубликовано 24 февраля, 2002 Имею следующий текст на C: fd_set rfds; struct timeval tv; FD_ZERO( &rfds );FD_SET( my_opened_socket, &rfds ); tv.tv_sec = 3; tv.tv_usec = 0; if ( select( 1, &rfds, NULL, NULL, &tv ) > 0 ) recv( my_opened_socket, buff, size ); Вообщем, хочу ждать данных из сокета не более 3х секунд, а в результате при 100% наличии данных всё - равно чего-то ждёт и возвращет 0. Этот - же текст пробовал для дестриптора 0 (stdin), всё нормально работает. Для сокетов select вообще работает ? Если нет, то что использовать?Если да, то где ошибка ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 4 марта, 2002 Жалоба Поделиться Опубликовано 4 марта, 2002 Сам уж наверное догадался, что первым параметром является максимальный файловый дескриптор + 1. Те если сокет открыт под дескриптором 4 то первый параметр 5 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 30 мая, 2002 Жалоба Поделиться Опубликовано 30 мая, 2002 А тогда супер-вопрос. Создал регуляр-файл. И делаю на нем селект: например так: select(fd+1,&rd_set,NULL,NULL,NULL) Он не ждет! А ведь файл-то пустой. Тогда делаю так: select(fd+1,NULL,NULL,&rd_set,NULL) Он не ждет, дак ведь ошибок-то в файле нет! Объясните ламеру, в чем проблема, чего я недопонимаю... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.