Позвольте спросить и тут несколько вопросов по опции licurl:
CURLOPT_WRITEFUNCTION, которая устанавливает обратный вызов функции при приемке новых данных и по нескольким дополнительным смежным опциям.
- Вопрос по CURLOPT_WRITEFUNCTION:—–>
В документации сказано:
Функция обратного вызова будет передавать как можно больше >данных >при всех вызовах, но вы не должны делать никаких >предположений. >Это может быть один байт, а может быть и тысячи. >Максимальный >объем данных тела, который будет передан функции >обратного вызова >записи, определен в файле заголовка curl.h : >CURL_MAX_WRITE_SIZE >(обычное значение по умолчанию - 16 КБ). >Если CURLOPT_HEADER >включен, что позволяет передавать данные >заголовка в обратный >вызов записи, вы можете получить до >CURL_MAX_HTTP_HEADER байтов >данных заголовка, переданных в >него. Обычно это означает 100К.
-Под 100К - имеется ввиду все тот же размер данных за один приход ? -Написано, что «Если CURLOPT_HEADER включен, то позволяет … 100К». Однако в документации к CURLOPT_HEADER сказано, что не опция CURLOPT_HEADER поддерживает 100K, а опция обратного вызова для заголовков CURLOPT_HEADERFUNCTION поддерживает 100K. Это небольшая неточность в документации ?
- Вопрос по CURLOPT_HEADER:—–>
Далее: обратный вызов CURLOPT_WRITEFUNCTION ограничен только >получением максимального количества переданных ему байтов >CURL_MAX_WRITE_SIZE (16 КБ), в то время как заголовок может быть >длиннее, а CURLOPT_HEADERFUNCTION поддерживает вызов с >заголовками до CURL_MAX_HTTP_HEADER bytes (100KBB).
-Подскажите, тут имеется ввиду, то, то заголовок может быть более 16K и его получение просто займет больше вызовов обратной функции CURLOPT_WRITEFUNCTION ? То есть грубо говоря ничего потеряно не будет, просто call-back будет вызываться чаще, так как принимает более маленькими порциями ?
- И еще один вопрос по опции CURLOPT_WRITEFUNCTION:
Эта функция может быть вызвана с нулевыми байтами данных, если >переданный файл пуст. Данные, передаваемые в эту функцию, не >будут завершаться нулевым символом в конце!
Не могу понять, что это может значит ? Зачем эта функция может быть вызвана с нулевым байтом данных и как на это реагировать ?
В чистых сокетах или портах завершения Windows, если функция WSARecv вызывалась с нулевыми данными - это значило, что соединение разварено со стороны севера. Тут то же самое или что то другое ? Главный вопрос, как на это нужно реагировать ?