Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: HTTP Запросы Добавлено: 05.12.06 01:17  

Автор вопроса:  Surok
1. Как возможно узнать что запрос полностью выполнен (скажем, необходимо узнать момент того что сервер вернул всю информацию по запросу)?
2. Как должен выглядеть запрос чтобы сервер возвращал инфу частями (или только одну часть)...скажем, по 200 кБ.?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 05.12.06 01:32
а что ты используешь?
обычно после окончания передачи информации удаленная сторона закрывает сокет

Ответить

Номер ответа: 2
Автор ответа:
 Surok



Вопросов: 36
Ответов: 106
 Профиль | | #2 Добавлено: 05.12.06 02:29
я хочу научиться работать с запросами и написать анализатор страниц...вот и думу думаю, собираю материал по теме.

обычно после окончания передачи информации удаленная сторона закрывает сокет


мне надо XML файл анализировать...а если он скачан не полностью? XML parser же его не разберет на части..я так понял, что надо проверять целостность скачанного файла..

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 05.12.06 12:54
1) В начале передается head, где-то в нем есть что-то вроде Content-Length:123

вот 123 и есть размер в байтах, всех данных что ты запрашиваешь (т.е. развер всей страницы, файлы итп...)

Вот при выкачки данных проверяешь, если уже выкачали 123, то все - конец, инче продолжаешь качать...

2) А это нет от запроса зависит, а от того как ты работаешь с сокетами...
юзая api recv, примерно так...

dim buffer as String * 16384
bytes = recv(socket, buffer, 16384, 0)
If bytes > 0 Then data = left(buffer, bytes)

16384 - и есть размер данных которые ты получаешь одним пакетом. Почему 16384 - потому что больше одним пакетом редко кто отдаст, и память сильно выделять тоже криво...

If bytes > 0 Then data = left(buffer, bytes)

т.е. сервер может вернуть и меньше чем 16384, но api recv вернет именно тот размер, который она получила... по этому размеру и отрежим строку...

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 05.12.06 22:07
Content-Length поле не обязательно.

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 06.12.06 01:25
Вот когда оно не обязательно, и не возможно определить размер файла, но тогда по таймауту...

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 06.12.06 01:26
p.s. Имел ввиде передается, от сервека к клиенту. Вообщем тому, кто отправил запрос...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам