Сетевые технологии. Баканов В.М. - 24 стр.

UptoLike

Составители: 

- 24 -
DWORD dwFileSize; // Размер файла шаблона
LPSTR szTemplate; // Адрес шаблона главной страницы
CHAR szBuf[10]; // Временный буфер для работы со счетчиком
INT nCounter; // Текущее значение счетчика
LPSTR szCounterPtr; // Указатель на поле счетчика в шаблоне
char UnikMarker[]="~~~~~"; // Маркер для замены на номер посещения (5 тильд)
//
// Открываем файл счетчика для чтения
CounterFile = fopen("CNTDAT.DAT", "r");
// Читаем из файла строку значения счетчике
fread(szBuf, 7, 1, CounterFile);
// Закрываем файл счетчика
fclose(CounterFile);
// Преобразуем содержимое счетчика из строки в число
sscanf(szBuf, "%d", &nCounter);
// Увеличиваем значение счетчика на 1
nCounter++;
// Записываем в буфер szBuf 5 цифр нового значения счетчика
sprintf(szBuf, "%05.5ld", nCounter);
// Открываем файл счетчика для записи
CounterFile = fopen("CNTDAT.DAT", "w");
// Сохраняем новое эначение счетчика в файле
fprintf(CounterFile, "%d", nCounter);
fclose (CounterFile);
//
// Считываем файл шаблона в оперативную память
//
// Открываем файл шаблона для чтения
TemplateFile = fopen("HOME.TM", "r");
// Определяем размер файла в байтах
fseek(TemplateFile, 0, 2); // на конец файла...
dwFileSize = ftell(TemplateFile); // длина
Оного
// Устанавливаем указатель текущей позиции на начало файла шаблона
fseek(TemplateFile, 0, 0);
// Захватываем память для буфера шаблона
szTemplate = (char *) malloc(dwFileSize);
// Загружаем шаблон в буфер
fread(szTemplate, dwFileSize, 1, TemplateFile);
// Заменяем 5 цифр значения счетчика на новые в буфере шаблона
//
// Ищем уникальный маркер поля счетчика UnikMarker
szCounterPtr = strstr(szTemplate, UnikMarker);
// Копируем в эTO поле новое эначение счетчика
if(szCounterPtr != NULL)
strncpy(szCounterPtr, szBuf, 5);
// Выводим заголовок HTTP и разделительную строку
printf ("Content-type: text/html\n\n");
// Выводим шаблон
с измененным значением поля счетчика
fwrite (szTemplate, dwFileSize, 1, stdout);
// Освобождаем буфер шаблона '
 DWORD dwFileSize; // Размер файла шаблона
 LPSTR szTemplate; // Адрес шаблона главной страницы
 CHAR szBuf[10]; // Временный буфер для работы со счетчиком
 INT nCounter; // Текущее значение счетчика
 LPSTR szCounterPtr; // Указатель на поле счетчика в шаблоне
 char UnikMarker[]="~~~~~"; // Маркер для замены на номер посещения (5 тильд)
//
// Открываем файл счетчика для чтения
 CounterFile = fopen("CNTDAT.DAT", "r");
// Читаем из файла строку значения счетчике
 fread(szBuf, 7, 1, CounterFile);
// Закрываем файл счетчика
 fclose(CounterFile);
// Преобразуем содержимое счетчика из строки в число
 sscanf(szBuf, "%d", &nCounter);
// Увеличиваем значение счетчика на 1
 nCounter++;
// Записываем в буфер szBuf 5 цифр нового значения счетчика
 sprintf(szBuf, "%05.5ld", nCounter);
// Открываем файл счетчика для записи
 CounterFile = fopen("CNTDAT.DAT", "w");
// Сохраняем новое эначение счетчика в файле
 fprintf(CounterFile, "%d", nCounter);
 fclose (CounterFile);
//
// Считываем файл шаблона в оперативную память
//
// Открываем файл шаблона для чтения
 TemplateFile = fopen("HOME.TM", "r");
// Определяем размер файла в байтах
 fseek(TemplateFile, 0, 2); // на конец файла...
 dwFileSize = ftell(TemplateFile); // длина Оного
// Устанавливаем указатель текущей позиции на начало файла шаблона
 fseek(TemplateFile, 0, 0);
// Захватываем память для буфера шаблона
 szTemplate = (char *) malloc(dwFileSize);
// Загружаем шаблон в буфер
 fread(szTemplate, dwFileSize, 1, TemplateFile);
// Заменяем 5 цифр значения счетчика на новые в буфере шаблона
//
// Ищем уникальный маркер поля счетчика UnikMarker
 szCounterPtr = strstr(szTemplate, UnikMarker);
// Копируем в эTO поле новое эначение счетчика
 if(szCounterPtr != NULL)
   strncpy(szCounterPtr, szBuf, 5);
// Выводим заголовок HTTP и разделительную строку
 printf ("Content-type: text/html\n\n");
// Выводим шаблон с измененным значением поля счетчика
 fwrite (szTemplate, dwFileSize, 1, stdout);
// Освобождаем буфер шаблона              '


                                      - 24 -