![]() |
|
Модераторы: 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 |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |