Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87

Можно ли написать простенький веб-сервер на C++?

04.09.2014, 20:07. Показов 7416. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
По предыдущим моим темам ( Подсчитать среднее арифметическое элементов каждого столбца матрицы и ввести все это в одномерный массив и Сортировка только первой строки матрицы ) можно понять, что я только начинаю изучение C++.

С предыдущими задачами поставленными передо мной я разобрался, конечно же с помощью Вашего форума (за что очень благодарен), но сегодня возник еще один вопрос: "Можно ли написать простенький веб-сервер на C++?"
Хотелось-бы еще иметь панель управления:
-Ведение логов(Какой IP заходил и когда)
-Очистка логов
-Открытие элементарной страницы html (Hello, World!)
-Остановка сервера/перезапуск
-Смена порта
-Аутентификация(вроде как HTTP)
-Автозапуск программы с системой
-Поддержка PHP
-Справка (О программе)

П.С. Просто подтолкните в каком направлении искать/думать что-бы что-то похожее сделать.
П.С.С. Это тема курсовой работы, которую сдавать не скоро, но я хочу начать уже сейчас
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2014, 20:07
Ответы с готовыми решениями:

Написать простенький веб-сервер и клиент к нему
Доброе всем время суток. Мне нужно написать простенький веб-сервер и клиент к нему. Клиент отправляет GET-запрос на сервер, сервер...

Можно ли написать веб сервер на Java для клиента на Android, имея под рукой только телефон на Android?
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее- какой программой компилировать код, какой лучше выбрать...

Написать простенький редактор, в котором можно рисовать графы
Дали задание: написать простенький редактор на си, в котором можно рисовать графы. Но проблема одна: сказали, реализовать все это с помощью...

8
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
04.09.2014, 20:41
GetLucky, еще как можно, nginx на С написан. Но прежде чем начать вам нужно учить язык, без указателей, структур, сокетов, классов и всего прочего тут не обойтись.
0
0 / 0 / 1
Регистрация: 03.09.2014
Сообщений: 87
04.09.2014, 20:44  [ТС]
nullpointer, можете поделится линками на ресурсы где можно это все глянуть?
Теорию читаю что такое указатели, структуры, классы знаю.
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
04.09.2014, 20:49
GetLucky, просто знать мало, нужно уметь все это использовать.
Есть отличная книга Б. Страуструп "Язык программирования С++". И не спешите бросаться сразу на что-то сложное, начинайте с простых примеров.
0
И целого heap'а мало
 Аватар для Andrej
96 / 57 / 17
Регистрация: 31.07.2014
Сообщений: 291
04.09.2014, 22:45
<PETROSYAN>
Нет, указом за номером 100500 от 01.08.1995 правительства РФ написание любого вида серверов на тер. РФ запрещено.
</PETROSYAN>
Для вянды будет практически тоже самое (если не точно тоже самое), кроме заголовочников.
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
68
69
70
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <err.h>
 
const char* response =
"HTTP/1.1 200 OK\r\n"
"Content-Type: text/html; charset=UTF-8\r\n\r\n"
"<doctype !html>\n"
"    <html>\n"
"        <head>\n"
"            <title>Bye-bye baby bye-bye</title>\n"
"            <style>body { background-color: #111 }\n"
"                   h1 { font-size:4cm; text-align: center; color: black;\n"
"                        text-shadow: 0 0 2mm red}\n"
"            </style>\n"
"        </head>\n"
"<body>\n"
"        <h1>Goodbye, world!</h1>\n"
"</body>\n"
"</html>\r\n";
 
int
main(int argc, char** argv)
{
        int one = 1;
        int client_fd;
        struct sockaddr_in svr_addr;
        struct sockaddr_in cli_addr;
        socklen_t sin_len = sizeof(cli_addr);
 
        int sock = socket(AF_INET, SOCK_STREAM, 0);
        if (sock < 0) {
                err(1, "can't open socket");
        }
 
        setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int));
 
        int port = 8080;
        svr_addr.sin_family = AF_INET;
        svr_addr.sin_addr.s_addr = INADDR_ANY;
        svr_addr.sin_port = htons(port);
 
        if (bind(sock, (struct sockaddr *) &svr_addr, sizeof(svr_addr)) == -1) {
                close(sock);
                err(1, "Can't bind");
        }
 
        listen(sock, 5);
        while (1) {
                client_fd = accept(sock,
                                   (struct sockaddr *) &cli_addr,
                                   &sin_len);
                printf("got connection\n");
 
                if (client_fd == -1) {
                        perror("Can't accept");
                        continue;
                }
 
                write(client_fd, response, strlen(response)); /*-1:'\0'*/
                close(client_fd);
        }
};
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
05.09.2014, 00:05
Цитата Сообщение от GetLucky Посмотреть сообщение
Можно ли написать простенький веб-сервер на C++?
Можно.
Для этого нужно:

1) Научиться работать с сокетами.

Есть много классных книжек по сетям, сокетам и TCP/IP.
Таненбаум, Снейдер, Оланд/Джонс (Windows) и другие.

2) Понять, что такое HTTP и с чем его едят.

Начать можно (нужно!) с RFC 1945 и RFC 2616, плюс
неплохо бы прочесть по диагонали пару книжек/статей по
данному протоколу. А также поставить сниффер и посмотреть
на примере любимого сайта (google, mail.ru, cyberforum...), как
происходят запросы-ответы.

3) Соединить пп. 1 и 2.
3
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
05.09.2014, 10:20
Простой сайт на D - пример из другого измерения.
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
05.09.2014, 10:47
Цитата Сообщение от GetLucky Посмотреть сообщение
"Можно ли написать простенький веб-сервер на C++?"
C++03 HTTP Server.
C++11 HTTP Server.
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
05.09.2014, 11:50
Первым делом, я советую разобраться с протоколом HTTP. А не с сокетами. Для этого больше подходит C# или любой другой язык программирования (или библиотека) с готовым классом и методом для обработки запросов.

Тогда начальный план будет сводиться к:

1. Написать http-сервер выдающий страницу Hello из памяти на любой запрос.
2. Написать http-сервер выдающий страницу Hello из памяти на только на запросы / и /index.htm, или страницу 404 в противном случае.
3. Выдавать "иконку" сайта.
4. Выдавать содержимое фалов в каталоге.
5. Http-base аутентификация.
....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.09.2014, 11:50
Помогаю со студенческими работами здесь

Как написать простой веб сервер
Доброго времени суток. Цель: разгрызть веб, написав программу-веб сервер. Суть: С браузера клиента захожу на IP сервера. Тот отправляет...

Написать сервер, мониторящий веб-страницы
Есть задача написать программку, мониторящую веб-страницы и отправляющую нужную инфу на почту. Посоветовали делать на wcf, но я не понимаю...

База данных MySql и веб сервер + нужно написать клиента
Здравствуйте уважаемые форумчане суть моей проблемы заключается в том что мне дали курсовую требования: трехуровневая система БД...

Как написать веб приложение "Виртуальный блокнот"? Подскажите с чего можно начать, чтобы написать такое?
Как написать веб приложение &quot;Виртуальный блокнот&quot;: Пользователь заходит на сайт. Затем нажимает кнопку добавить, вводит имя файла и его...

Можно ли написать прокси-сервер?
Можно ли написать Proxy? Если да, то какие функции или компоненты использовать? и где их искать? а может у кого документация есть???


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru