Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
#1

C++ as WebServer - C++

12.02.2012, 21:26. Просмотров 842. Ответов 7
Метки нет (Все метки)

Всем привет.

Накодил какого-то бреда на Си, который создаёт .htm файл с javascript'ом и canvas. Такой вот костыльный метод - влом было вспоминать WinAPI и тем более - изучать, как там рисуется всё в Linux'е (это явно OpenGL, а там плохо).
Костыли костылями, но вот подумал - почему нельзя всё это завести на сервере, каким-то образом происходит запрос, мы создаём файлик, куда пихаем весь html созданный моей программой или же сразу в поток. В общем, я вообще пока что ни разу не создавал ни одного web-приложения / ресурса...
Причём... Литературу читать совсем нет желания... Не знаю, хотелось бы сделать всё попроще и дальше развлекаться... А не думать то, как завести сервер =/ Лучше всего ссылку на библиотеку + простенький пример аля Hello World.

Заранее спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 21:26     C++ as WebServer
Посмотрите здесь:

WebServer в Ubuntu - Ubuntu Linux
Доброго времени суток . Подскажите пожалуйста как правильно поставить и настроить Apache , PHP , mode rewrite , mysql , Phpmyadmin ?

WebServer на Ноутбуке - Apache
Доброго времени суток уважаемые форумчане. Имеется ноутбук DELL 420 задача поднять на нем сервер для личного использования.* ...

Не могу настроить webserver - Ubuntu Linux
здравствуйте. решил перейти на Linux Ubuntu и первое что стал настраивать это вебсервер. создал с нужными правами папку webserver in...

В webmin нету Apache webserver - FreeBSD
Я установил webmin и не могу понять как его русифицировать. И у меня в меню Servers есть такие подменю: BIND DNS Server CVS Server...

WebServer выгрузка / загрузка файлов - C++ Builder
Домашний Веб сервер по методологии CGI ISAPI - Web Server Application Задача: 1. При определенном действии, выгрузить файл (офис, тхт,...

Настроить Delphi с использованием webserver SQL - Delphi БД
люблю Delphi но базы данных предпочитаю SQL, раньше хорошо получались php скрипты+SQL, не хочу менять на ADOQuery, не знаком вообще,...

DMZ - demilitarized zone - best practice webserver и SQL Server - C# ASP.NET
Что-то не могу найти ничего путнего на тему каким образом лучше всего настроить работу вебсервера (Win) и SQL Server в DMZ. Если у кого...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,120
12.02.2012, 21:37     C++ as WebServer #2
Если нужна некая динамика, берешь любой легковесный веб-сервер и через fastcgi прикручиваешь к нему свои плюсы.
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
12.02.2012, 21:48  [ТС]     C++ as WebServer #3
Цитата Сообщение от AnyOne697 Посмотреть сообщение
В общем, я вообще пока что ни разу не создавал ни одного web-приложения / ресурса...
Причём... Литературу читать совсем нет желания... Не знаю, хотелось бы сделать всё попроще и дальше развлекаться...
Цитата Сообщение от NoMasters Посмотреть сообщение
Если нужна некая динамика, берешь любой легковесный веб-сервер и через fastcgi прикручиваешь к нему свои плюсы.
А подробнее?.. Причём мне же не нужны никакие мускулы, никакие php, никакие плюшки. Ничего - просто ответ от Сишной проги на запрос. Динамика, ессно, очень желательна =) Наверное, без неё никак. Но она очень простая, даже банальная. А заводить и разбираться из-за этого в сервере. Нет, я знаю, есть варианты проще =) Нашёл некий WebToolkit, но там вообще ничего не понятно. На хабре была статья, тоже не разобрался (точнее - ничего не запустилось, не было каких-то Socket.h, а что это и с чем едят - ничего нигде не написано). Прошу что-нибудь с простыми примерами и быстрым понятным туториалом...
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
12.02.2012, 22:51     C++ as WebServer #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
По-подробнее

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
 
 
const char * http_header = "HTTP/1.0 200 OK\r\n"
"Content-type: text/html; charset=utf-8\r\n"
"Connection: close;\r\n"
"\r\n";
 
const char * page = "<html>"
"<head>"
"<style type='text/css'>"
"div"
"{"
"width: 1000px; margin: auto; border: 1px solid #aaa; padding: 5px; border-radius: 5px;"
"background: #eee; box-shadow: 0 0 5px #aaa;"
"font-family: arial, tahoma; font-size: 10pt; color: #444;"
"}"
"h1"
"{"
"padding: 0 0 5px 0; margin: 0; border-bottom: 1px solid #444;"
"font-size: 14pt;"
"}"
"</style>"
"<title>Тест</title>"
"</head>\n"
"<body>"
"<div>"
"<h1>Тестовая программа на C</h1>"
"Этот текст был выведен программой на C, занимающей 23 килобайта :-)"
"</div>"
"</body></html>";
 
int main( int argc, char ** argv )
{
    int port = 80;
    
    if( argc >= 2 )
        sscanf( argv[1], "%d", &port );
    
    printf( "Port: %d\n", port );
 
    int sock_fd = socket( AF_INET, SOCK_STREAM, 0 );
    
    if( sock_fd <= 0 )
    {
        perror( "socket" );
        return -1;
    }
    
    
    struct sockaddr_in serv_addr,
                       client_addr;
    
    memset( &serv_addr, 0, sizeof( serv_addr ) );
    
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = INADDR_ANY;
    serv_addr.sin_port = htons( port );
    
    if( 0 != bind( sock_fd, (struct sockaddr *) &serv_addr,
             sizeof(serv_addr))  ) 
    {
        perror( "bind" );
        return -1;
    }
    
    if( 0 != listen( sock_fd, 5 ) )
    {
        perror( "listen" );
        return -1;
    }
    
    puts( "Listening..." );
    
    socklen_t client_len;
    int client_socket;
    
    while( -1 != ( client_socket = accept( sock_fd, (struct sockaddr *) &client_addr, 
                                                    &client_len) ) )
    {
        printf( "Transmission request: %s\n", inet_ntoa( client_addr.sin_addr ) );
        write( client_socket, http_header, strlen( http_header ) );
        write( client_socket, page, strlen( page ) );
        close( client_socket );
    }
 
    return 0;
}
А дальше - изучайте HTTP-протокол :-)

Добавлено через 3 минуты
P. S.: curl
NoMasters
Псевдослучайный
1747 / 1090 / 71
Регистрация: 13.09.2011
Сообщений: 3,120
12.02.2012, 23:54     C++ as WebServer #5
talis, не лучшая идея руками развлекаться с этим всем, пока ещё учтёшь все возможные варианты поведения клиента и нормально распределишь нагрузку...
AnyOne697, идешь на http://www.fastcgi.com/, за двадцать минут осиливаешь доки(и весьма немного) с примерами и начинаешь ваять нетленку. Там всё банально, пара функций инициализации и пиши свой вывод прямо в stdout.
easybudda
Эксперт CЭксперт С++
9465 / 5478 / 927
Регистрация: 25.07.2009
Сообщений: 10,500
13.02.2012, 00:14     C++ as WebServer #6
Цитата Сообщение от AnyOne697 Посмотреть сообщение
(это явно OpenGL, а там плохо)
Для 2D графики есть сairo, но "там", видимо, ещё хуже...

Цитата Сообщение от AnyOne697 Посмотреть сообщение
Литературу читать совсем нет желания...
Поднять apache - даже в первый раз часа два от силы. Если читать совсем лень - на ютубе видеоуроки для самых одарённых есть. Там же можно найти пару-тройку увлекательных историй про CGI, а дальше всё совсем просто:
C++ as WebServer
AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 533
13.02.2012, 02:46  [ТС]     C++ as WebServer #7
Цитата Сообщение от easybudda Посмотреть сообщение
Поднять apache - даже в первый раз часа два от силы.
Эх... Если бы была Visa с неограниченной кредитной линией, жизнь была бы слаще и проще =)
Вот посмотрел, на мобилке 70 деревянных... Даже Virtual не оформить, так что здесь и сейчас себе Apache сделать... О, нет! Только не намекайте мне про виртуальные машины! Только не они =/ Я уже звонил своему прошлому провайдеру и три часа пытался себе сделать ВНЕШНИЙ ip. Они его за NAT прятали. То есть, он был статичный, но блин толку мне от такого статичного... У текущего такая же история =( Причём, байки читал - что внешний не делают... Но разбираться нет желания...

Сейчас на больничном. Так что сижу потихоньку ловлю баги, развиваю и унифицирую (в планах гораздо большее). К тому же нашёл сервис OnLive (dot com) - ночью вообще без лагов (видимо НАШИ сервера свободны), лишь лёгкая незаметная задержка ничуть не умаляющая удовольствие от игры в гоночки и аркады =) Блин, затягивает... Я уже спустил на неё 10 вечнозелёных... А... блин, оффтоп...

Цитата Сообщение от talis Посмотреть сообщение
А дальше - изучайте HTTP-протокол :-)
О, ужас! Я уже пытался файлик скачать через socket. Не, без матчасти там делать нечего... А матчасть - это время... Это много времени...

Ладно, придётся подождать с сервером. Впрочем, может и через VPN разернусь. Благо hamachi есть... Спасла уже не раз =) Нет, не CS - я через неё поднимал VNC - direct тунель - и всё без лагов =) Никаких ssh, паролей и ключей - hamachi себя сама шифрует и этого, имхо, достаточно.

Цитата Сообщение от easybudda Посмотреть сообщение
Для 2D графики есть сairo, но "там", видимо, ещё хуже...
Не знаю, но я ничего сложного в ней не нашёл... Пока что =( OpenGL и "всё плохо" только потому, что ничего не работает какие бы туториалы я бы ни читал =( Такие вот дела... Даже Qt не завелась =(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2012, 03:02     C++ as WebServer
Еще ссылки по теме:

IdHTTP CGI WebServer загрузка файла с ПК пользователя на сервер - C++ Builder
Прошу проконсультировать. Есть CGI Web Server по адресу https://193.158.98.65 (не точный) Задача: Клиент, работая с Web Server,...

Нужен грамотный пошаговый манул, как поднять webserver на debian 7 - Web-серверы
Мастера! Взываю к вам! Нужен грамотный пошаговый манул, как поднять webserver на debian 7. Со всеми плюшками: как закрепить домен с...

Смоделировать работу web-сервера по связке: WebBrowser - Channel - WebServer - SQL - GPSS
Доброго времени суток дамы и господа :) У меня немного необычная просьба о помощи. Необходимо смоделировать работу web-сервера по связке:...

Как найти свою базу (таблицы) в Webserver после переустановки Windows - PHP БД
Переустановил Винду, сохранил папку Webserver на диска D. Потом снова установил денвер. Как к ниму подключить старую базу и в каком файле...

Как можно закачать локальные файлы с помошью php+JS на webserver без доступа по FTP и без участия пользователя ? - PHP
Как можно закачать локальные файлы с помошью php+JS на webserver без доступа по FTP и без участия пользователя ? Это нужно только для...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт CЭксперт С++
9465 / 5478 / 927
Регистрация: 25.07.2009
Сообщений: 10,500
13.02.2012, 03:02     C++ as WebServer #8
Цитата Сообщение от AnyOne697 Посмотреть сообщение
OpenGL и "всё плохо" только потому, что ничего не работает какие бы туториалы я бы ни читал =( Такие вот дела... Даже Qt не завелась =(
Пока
Цитата Сообщение от AnyOne697 Посмотреть сообщение
разбираться нет желания
и не заведётся.
Цитата Сообщение от AnyOne697 Посмотреть сообщение
Эх... Если бы была Visa с неограниченной кредитной линией, жизнь была бы слаще и проще =)
То есть суть всей темы в том, что просто денег не хватает? Ну так тут вроде бы форум программистов, а не благотворительный фонд... Тему закрываю. Определитесь сначала с задачей, и, если желание разбираться так и не появится, рекомендую таки накопить денег и заказать решение...
Yandex
Объявления
13.02.2012, 03:02     C++ as WebServer
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru