![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мониторинг файла в Internet [WinXP]
Alexis © (2006-01-30 23:42:00)Добрый вечер!
Возникла такая задача - из программы надо отслеживать изменения в некотором файле по адресу www.site.com/some_content.xml.
Возможно-ли это осуществить?
На данный момент не нашел ничего лучше, чем по таймеру скачивать файл www.site.com/some_content.xml и сравнивать его содержимое со старым файлом. Но это конечно неоправданная нагрузка и лишний трафик, т.к. сожержимое some_content.xml не слишком часто обновляется.
Пока реализованно как
void TForm1::downloadWWWFile(AnsiString hostname, AnsiString remoteFileName, AnsiString localFileName, TClientSocket *socket)
{
...
queryString = "GET " + remoteFileName + " HTTP/1.0" + "\x0D\x0A" + "Host: " + hostname + "\x0D\x0A\x0D\x0A";
returnCode = socket->Socket->SendText(queryString);
//скачиваем файл
...
}
Буду благодарен за любую помощь.
kaZaNoVa (2006-02-02 04:45:00) [1]ETag - а что это такое:))?
Reindeer Moss Eater (2006-01-31 22:03:00) [2]А если запрашиваемый ресурс - это не дисковый файл, кто посчитает его ETag?
programania (2006-01-31 21:27:00) [3]Следите за IE
Запрос IE:
GET http://programania.com/FON1.GIFHTTP/1.0
Accept: */*
Referer: http://programania.com/index.htm
Accept-Language: ru
Proxy-Connection: Keep-Alive
If-Modified-Since: Mon, 12 Jul 2004 16:33:01 GMT
If-None-Match: "50930-47-e80c0940"
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: programania.com
Ответ сервера:
HTTP/1.1 304 Not Modified
Date: Wed, 25 Jan 2006 13:47:19 GMT
Server: Apache/2.0.53 (Unix)
Connection: close
ETag: "50930-47-e80c0940"
и IE уже не качает
Reindeer Moss Eater (2006-01-31 21:03:00) [4]Можно с помощью заголовков запроса (указывая начало и длину контента)
Но лучше руками, прекращая чтение после того, как считано нужное кол-во байт.
Alexis (2006-01-31 20:31:00) [5]
> и качаешь только до смещения.
Это как?
Reindeer Moss Eater (2006-01-31 00:18:00) [6]Скачивать можно и не весь файл. Определяешь максимальное смещение от начала, по которому можно судить о том, что файл не изменился (если до позиции смещения файл не отличается от дисковой копии) и качаешь только до смещения.
Reindeer Moss Eater (2006-01-31 00:12:00) [7]На данный момент не нашел ничего лучше, чем по таймеру скачивать файл
А ничего другого здесь и не придумать, как бы редко этот файл не обновлялся. Периодически проверять на новизну.