Почему делает вызывание функции InternetReadFileEx с флагом IRF_NO_WAIT, все еще ожидают?

Codeigniter, он быстрый и очень документированный, имеет большое сообщество и, наконец, дружит с программистом.

1
задан Shog9 20 June 2009 в 21:40
поделиться

3 ответа

В документах MSDN значение IRF_NO_WAIT описывается как:

Не ждать данных. Если есть доступные данные, функция возвращает либо количество запрошенных данных, либо количество доступных данных (в зависимости от того, что меньше).

Таинственным образом она оставляет случай, когда есть не доступных данных, неопределенным. Очевидно, если нет данных , он блокируется до тех пор, пока они не появятся.

1
ответ дан 3 September 2019 в 01:18
поделиться

IRF_NO_WAIT означает не ждать, пока все запрошенного буфера данных будут заполнены. Однако он по-прежнему будет ждать некоторых данных. Если данные не поступают, блокируется.

0
ответ дан 3 September 2019 в 01:18
поделиться

Возможный обходной путь - использовать InternetQueryOption () для получения структуры INTERNET_DIAGNOSTIC_SOCKET_INFO, а затем передать дескриптор СОКЕТА в :: select () с таймаутом {0, 0} для определения наличия данных доступно без блокировки.

1
ответ дан 3 September 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: