![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
У меня есть WinInet-проект на С++, который открывает интернет страницу. Как запихнуть ее содержимое в какой-нибудь буфер? ведь размер страницы неизвестен! Мы можем только читать определенное кол-во символов, а сервер вернет сколько может!
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Размер страницы неизвестен, зато можно прочитать сколько получится
![]() -------------------- ![]() |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Каким образом? Допустим у меня есть файл, который где-то лежит. Я могу использовать только функцию чтения, в которой нужно указывать размер сколько считать. Как быть? Как по частям это считать и как поместить в буфер? Сделать несколько буферов? Сделать список буферов?
|
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
читать порциями определенного размера и их записывать в динамический массив ( ожно и список )
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
я это знаю. Как лучше это сделать? Просто мне интересно мнение специалистов. Например, как это делает Эксплорер?
|
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Простой и эффективный метод - это использование контейнера deque (добавление элементов происходит "пачками", а не по одному, как в list, и не с перераспределением как в vector или в дин. массиве; доступ к элементу по индексу ненамного медленнее, чем в дин. массиве):
-------------------- ![]() |
||||
|
|||||
dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
Эксплорер в http заголовке читает размер документа
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
dwr_budr, трабл в том что ответ может не целиком дойти
![]() -------------------- ![]() |
|||
|
||||
FreshMeat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 30.1.2004 Репутация: нет Всего: нет |
||||
|
||||
dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
mr. DUDA
Какой ответ? Хттп заголовок? Тек если его не получит клиент, то речи о контенте и быть не может вообще. Так что не вижу повода для беспокойства ![]() Ежели сам контент придет не в полном объеме, то это уже дело клиента как поступить. Или ругнется, или отрендерит (просто сохранит) то что получил. От того что буффер динамический контента больше не придет ![]() Это сообщение отредактировал(а) dwr_budr - 5.6.2004, 08:30 |
|||
|
||||
Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
Как в WinInet получить размер страницы, которую читаешь?
|
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
dwr_budr
Заголовок-то придет, но поле длины контента сплошь и рядом будет врать. Ибо в инете дофига всякого. Anton Vatchenko Не прочитав до конца - никак. Ориентироваться конечно можно на что-то. Но в чем проблема-то? выделяй список блоков кило по 10 да и делов-то. IMHO это не то, что надо оптимизировать (если конечно ты не браузер для часов пишешь ![]() |
|||
|
||||
dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
AndyY
А можно поподробнее о вранье в поле размера контента. Мне просто интересно каким образом веб сервер его неправильно сгенерит. |
|||
|
||||
AndyY |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Обратимся к RFC 2616, посвященному протоколу HTTP1.1
По большому счету возможность некорректной передачи content-length заложена в нем. Например, ситуация с transfer-encoding (пункт 4.4): If a message is received with both aTransfer-Encoding header field and a Content-Length header field, the latter MUST be ignored. Кроме того в стандарте явно прописаны случаи, когда content-length посылать нельзя. Гарантировать, что так и есть в реальной жизни - не возможно, потому что серверов до дьявола. может завтра посмотрю конкретные примеры, если будет время. |
|||
|
||||
dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
AndyY
Ах вот где собака зарыта! Тогда без вопросов! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |