Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.04.2017
Сообщений: 10

Логирование очень простого сервера в Linux

02.04.2017, 17:58. Показов 708. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи, здравствуйте.


Требуется помощь.
Записался на курсы программирования на C, но никак не могу разобраться с контрольным заданием.
Необходимо написать функции (назвать их logRequest (char *S) и logResourse (int found, char *S, long size)) логирования в файл ./web-srv.log и встроить их в следующий код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <unistd.h>
#include <string.h>
 
char lszReplyHeader[] = \
        "HTTP/1.1 %s\n" \
        "Server: test-server (Unix-like system)\n" \
        "Accept-Ranges: bytes\n" \
        "Connection: close\n\n";
 
char lszNotFoundReplyBody[] = \
        "<html>" \
        "<head>" \
        "  <title>An Example 404 Page</title>" \
        "</head>"\
        "<body>" \
        "<h1>Requested resource not found on the server.</h1>" \
        "</body>" \
        "</html>";
 
 
int main(int argc, char *argv[])
{
    FILE *lfHttpResource, *lfLogFile;
    char lszHttpResPath[100];
    char lszRequestMethod[10], lszRequestedPage[100], lzsProtoName[10];
 
 
    lfLogFile = fopen("./web-srv.log", "a");
 
    scanf("%s %s %s", lszRequestMethod, lszRequestedPage, lzsProtoName);
    fprintf(lfLogFile, "Requested Page: %s\n", lszRequestedPage);
 
    sprintf(lszHttpResPath, "./htdocs%s", strcmp("/", lszRequestedPage) == 0 ? "/index.html" : lszRequestedPage);
    lfHttpResource = fopen(lszHttpResPath, "r");
 
    if ( lfHttpResource )
    {
        fseek(lfHttpResource, 0, SEEK_END);
 
        long  resourceSize = ftell(lfHttpResource);
        char *buffer = malloc(resourceSize);
 
        fprintf(lfLogFile, "Page found at ./htdocs%s, page size is %ld\n", lszRequestedPage, resourceSize);
 
        printf ( lszReplyHeader, "200 OK", resourceSize );
 
        rewind(lfHttpResource);
        fread(buffer, 1, resourceSize, lfHttpResource);
        fwrite(buffer, 1, resourceSize, stdout);
 
        free(buffer);
        fclose(lfHttpResource);
    }
    else
    {
 
        printf(lszReplyHeader, "404 PAGE NOT FOUND");
        puts(lszNotFoundReplyBody);
    }
 
 
    fprintf(lfLogFile, "***\t***\tEND OF REQUEST #%s\t***\t***\n\n", argv[1]);
 
    fclose(lfLogFile);
    return 0;
}
Без каких-либо изменений в коде в лог-файле выводится информация:

Requested Page: /about.html
Page found at ./htdocs/about.html, page size is 1284
*** *** END OF REQUEST #3 *** ***

Requested Page: /links.html
Page found at ./htdocs/links.html, page size is 1284
*** *** END OF REQUEST #4 *** ***



Не могу понять, куда именно вставлять эти функции и что в них писать. И подозрения вызывает 34 строчка.

Help, please.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2017, 17:58
Ответы с готовыми решениями:

Логирование в astra linux
Всем привет. Не могу настроить логирование входа/выхода пользователя в астре, в /var/log/auth.log все пишется, но исходя из руководства...

Что лучше для сервера сайта Arch Linux или Linux Debian ?
Подскажите пожайлуста что лучше для сервера сайта Arch Linux или Linux Debian ?

Подключение очень простого LCD
Приветствую! В общем, решил я сочинить собственный таймер, с энкодером да с дисплейчиком покрупнее. Чтобы циферки были издалека видны,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2017, 17:58
Помогаю со студенческими работами здесь

СМЕТА очень простого Android-приложения
Добрый день уважаемые специалисты! Помогите пожалуйста советом, и не серчайте за неопытность. Нужно очень простое приложение для андроид(...

настройка простого прокси-сервера
Нужно настроить прокси-сервер, погуглил, везде разговоры о том какие прокси бывают. Выбрал squid. А на какой дистрибутив ставить?...

Написание простого ftp сервера
Чтобы на мой компьютер можно было заходить через проводник. Пока без паролей и прочего... Какие компоненты для этого нужно использовать -...

Настройка простого DHCP сервера
Здравствуйте! Каким образом DHCP решает проблему уникальности назначения адресов?

Создание простого http сервера
Доброго времени суток. Может у кого есть опыт создания своего http сервера? задача проста - нужно что бы пару файлов были бы видны в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru